2017-09-24 140 views
0

晚上好开发动态生成的复选框,这样结合在一个数组动态生成值我复选框,当我有这个问题。基本上,我有我的users.template.html文件中的以下内容:ID的绑定数组在Angular4

<div *ngFor="let r of roles" class="checkbox"> 
    <label for=""> 
     <input type="checkbox" id="{{ r.name }}" (change)="onRoleChange(r.name, $event)" [checked]="userRoles.includes(r.name)"> {{ r.name }} 
    </label> 
</div> 

基本上它是更新用户已基于动态生成的给定的复选框中的作用。现在,(其他城市)奇妙的作品,但[检查]抛出​​一个错误说以下内容:

无法读取财产“包括”未定义

我不知道为什么,因为到处都是我看着它指出我对这种类型的动态内容使用这种绑定。所以,如果你有他们请任何指针会很棒。提前谢谢大家的任何建议。

+0

似乎'userRoles'不被任何定义?它从何而来? – amal

+0

我在开始为***定义的UserRole它:任何[]; ***,然后初始化上ngOnInit其数据(),以获得它填满。 –

+0

你能展示其内容的样本? – amal

回答

0

你不能叫继承在模板中直接按我的理解特定type的对象的方法。你可以调用一个组件方法,而不是为你做这个计算。

<input type="checkbox" id="{{ r.name }}" (change)="onRoleChange(r.name, $event)" [checked]="presentInUserRoles(r.name)"> 

组件

presentInUserRoles(role: string): boolean { 
return this.userRoles.includes(role); 
} 
+0

这个工作,不知道为什么它限制寿,它曾经像以前的其他工作方式。 –

+0

如果你能证明它之前是如何工作的一个例子,可能是我可以尝试指出的差别。您当然可以引用对象'在模板内'的特定属性,但不能调用属于其原型的继承方法。 – amal