Angular 4标记中[property] =和属性有什么区别?

时间:2017-12-06 16:35:47

标签: angular

因此,让我们对PrimeNG表进行以下标记

<p-dataTable
    selectionMode="multiple"
    [(selection)]="selectedUsers"
    dataKey="id"
    [value]="users">

selectionMode="multiple"[selection]="multiple"之间显然存在差异,因为第二个变量不会使表格可选。有什么区别??

我认为property=将设置一次值,而[property]=会将该属性绑定到输入值,因此它会反映其更改,但如果是这种情况,则在两个变量表中都应该在我的情况下表现相同。

2 个答案:

答案 0 :(得分:1)

不同之处在于引擎盖下使用的装饰器

对于像[property] =“”这样的情况,组件ts文件使用 @Input 装饰器实现该属性。

对于像此属性=“”的情况,组件ts文件使用 @Attribute 装饰器实现该属性。

见这个例子:

export class MyComponent {

    @Input() public title1: string;
    public title2: string;

    constructor(@Attribute('title2') titleAttr) {
        this.title2 = titleAttr;
    }

}

那么,您可以像以下一样使用它:

<my-component [title1]="'testing'" title2="testing2"></my-component>

要记住的另一件事是能够决定何时使用哪一个是您要传入的值的类型。虽然输入接受来自组件上下文的变量,但该属性仅接受在行传递的值。

请注意,在上面的示例中,对于输入,我使用单引号来传递字符串,但它可以没有引号和现有变量的名称。

答案 1 :(得分:0)

selectionMode="multiple"

是纯HTML 属性,并且与Angular无关。

[selection]="multiple"

从字段(或表达式)multiple创建角色绑定到属性 selection