2017-08-29 90 views
0

我怎样才能价值指数或ID传递给EditDetail()的参数。我希望它被放在onEditDetail()的括号内有一次,我在HTML点击onEditDetail()通行证ID(索引)onEditDetail()参数

ngOnInit() { 
    this.route.params 
    .subscribe((params: Params) => { 
     this.id = +params['id']; 
     this.user = this.userService.getUser(this.id); 
    }); 
} 

onEditDetail(id: string) { 
    console.log(id); 
} 

用户detail.component.html

<div class="container"> 
    <div class = "row"> 
    <div class="col-md-3"></div> 
    <div class = "col-md-8"> 
     <div class="card"> 
     <div class="card-header"> 
      {{ user.l_name}} 's Complete Information<span class="pull-right"><input class="form-control" placeholder="Search User" name="srch-term" id="srch-term" type="text"></span> 
     </div> 
     <table class="table table-responsive"> 
      <thead class="thead-default"> 
      <tr> 
       <th>First Name</th> 
       <th>Last Name</th> 
       <th>Contact Number</th> 
       <th>Actions</th> 
      </tr> 
      </thead> 
      <tbody> 
      <tr> 
       <td>{{ user.f_name }}</td> 
       <td>{{ user.l_name }}</td> 
       <td>{{ user.contact_no }}</td> 
       <td><button class=" btn btn-primary" style="cursor: pointer;" (click)="onEditDetail()">Edit</button> </td> 
      </tr> 
      </tbody> 
     </table>  
     </div> 
    </div> 
    </div> 
</div> 

回答

0

你可以做这

ngOnInit() { 
    this.route.params 
    .subscribe((params: Params) => { 
     this.id = +params['id']; 
     this.user = this.userService.getUser(this.id); 

     // Your method call 
     this.onEditDetail(this.id); 
    }); 
} 

onEditDetail(id: string) { 
    console.log(id); 
} 
+0

它说的类型number为不能分配给字符串类型的参数。也希望它成为一个数字。谢谢 – Joseph

0
ngOnInit() { 
    this.route.params 
    .subscribe((params: Params) => { 
     this.id = +params['id']; 
     this.onEditDetail(this.id); //call onEditDetails and pass id to it. 
     this.user = this.userService.getUser(this.id); 
    }); 
} 

onEditDetail(id: any) { 
    console.log(id); 
} 
1

添加邻疗法的答案,

你要明白,你正在一个异步调用。

所以如果你需要任何地方访问ID,您需要获得对异步调用的完成,而不是在这之前。

这就是原因,你需要调用onEditDetail()内订阅块作为最后一个参数。 有3个参数可供订阅。

  1. 数据是通过调用返回,
  2. 错误,如果任何出错。
  3. 完成后,如果你想做点什么。

在你的情况下,作为第三个参数,你必须调用onEditDetail方法

ngOnInit() { 
    this.route.params 
    .subscribe((params: Params) => { 
     this.id = +params['id']; 
     this.user = this.userService.getUser(this.id); 

     // 3rd parameter, this is where call is subscribe is completed 
     this.onEditDetail(this.id); 
    }); 
} 
+0

它说类型号的参数不能分配给字符串类型的参数。也希望它成为一个数字。感谢 – Joseph

+0

@Joseph您onEditDetail改变(ID:字符串)onEditDetail(ID:任意) –

+0

你有任何想法,为什么在+参数那里有一个“+”号?目的是什么? – Joseph