【问题标题】:Angular 2 - Pass variable to ng-templateAngular 2 - 将变量传递给 ng-template
【发布时间】:2017-05-02 18:15:04
【问题描述】:

我有这个 ng 模板。一切都与循环一起工作。唯一的问题是我不能用“let-title”传递“title”变量。

我的语法有什么问题?我需要 *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>

【问题讨论】:

  • 我相信您正在引用变量权限,但您尚未声明该变量。 permission.title 将失败,因为权限未定义。不确定,但将permission.title 替换为perm.title 可以解决吗?
  • 1. ngFor NgForOfContext 从 ngForOf 创建一个上下文,而 let-title 不会做任何事情。 2.如果认为你只能将一个结构指令应用于一个元素。所以没有 ngFor 和 ngIf 在一起。

标签: angular angular-template


【解决方案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>

【讨论】:

    猜你喜欢
    • 2018-09-02
    • 2020-04-22
    • 2019-08-10
    • 2019-10-04
    • 2018-08-05
    • 2016-06-26
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多