Angular 2 - передать переменную в ng-шаблон

У меня есть этот ng-шаблон. С петлей все работает. Единственная проблема в том, что я не могу передать переменную "title" с помощью "let-title".

Что не так с моим синтаксисом? Нужна ли звездочка для *ngIf?

«selectPerm (название)» не работает. Это всегда неопределенно.

<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>

person Michalis    schedule 02.05.2017    source источник
comment
Я полагаю, что вы ссылаетесь на разрешение переменной, но вы не объявили эту переменную. разрешение.title завершится ошибкой, потому что разрешение не определено. Не уверен, но решит ли это замену permission.title на perm.title?   -  person birwin    schedule 02.05.2017
comment
1. ngFor NgForOfContext создает контекст из ngForOf и let-title ничего не сделает. 2. Если вы считаете, что можете применить к элементу только одну структурную директиву. так что нет ngFor и ngIf вместе.   -  person Julia Passynkova    schedule 02.05.2017


Ответы (1)


Попробуйте поместить *ngIf в свой тег "tr", а затем сослаться на 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>
person birwin    schedule 02.05.2017