2017-05-02 72 views
2

我有這個ng-template。一切與循環一起工作。唯一的問題是我無法將「title」變量與「let-title」一起傳遞。Angular 2 - 將變量傳遞給ng-template

我的語法有什麼問題?我需要* ngIf作爲星號嗎?

「selectPerm(title)」不起作用。它總是未定義的。

<ng-template ngFor 
      let-perm 
      let-title="permission.title" 
      [ngForOf]="permission.data.permissions" 
      *ngIf="editForm.controls.permissions.controls[permission.data.id].value == '0'"> 
      <tr> 
       <td></td> 
       <td>{{perm.name}}</td> 
       <td><label>Allow: <input type="radio" value="1" formControlName="{{perm.id}}" (click)="selectPerm(title)"></label></td> 
       <td><label>Deny: <input type="radio" value="-1" formControlName="{{perm.id}}" (click)="selectPerm(title)"></label></td> 
       <td></td> 
      </tr> 
</ng-template> 
+0

我相信你引用變量的權限,但是你有沒有宣佈變量。由於權限未定,permission.title將失敗。不確定,但會用'perm.title'替換'permission.title'解決它? – birwin

+0

1. ngFor NgForOfContext從ngForOf創建一個上下文,let-title不會執行任何操作。 2.如果你認爲你可以只對一個元素應用一個strutual指令。所以沒有ngFor和ngIf在一起。 –

回答

1

試着將你的「TR」標籤的* ngIf然後引用perm.title而不是一個模板輸入變量:

<ng-template ngFor 
     let-perm 
     [ngForOf]="permission.data.permissions"> 
     <tr *ngIf="editForm.controls.permissions.controls[permission.data.id].value == '0'"> 
      <td></td> 
      <td>{{perm.name}}</td> 
      <td><label>Allow: <input type="radio" value="1" formControlName="{{perm.id}}" (click)="selectPerm(perm.title)"></label></td> 
      <td><label>Deny: <input type="radio" value="-1" formControlName="{{perm.id}}" (click)="selectPerm(perm.title)"></label></td> 
      <td></td> 
     </tr> 
</ng-template>