Angular2:将任何属性绑定应用于子元素

时间:2016-12-16 21:28:35

标签: angular

假设这个简单的Angular 2 app

主要组成部分:

@Component({
    selector: "app"
})
@View({
    directives: [ChildComponent]
    template: '<child-component></child-component>'
})
export class App {}

子组件

@Component({
    selector: "child-component",
    template: '<input type="text" id="applyEverythingToMe" />'
})
export class ChildComponent {}

我们如何将任何属性绑定,指令,无论如何应用于applyEverythingToMe输入字段,而不通过@Attribute,...在ChildComponent中定义所有内容?

假设例如我们想通过

禁用输入
<child-component [disabled]="true"></child-component>

插件:https://plnkr.co/edit/kndYdGFsp8sEzCPpcKdq?p=preview

编辑:

由于第一个答案错过了我们的实际问题,这里有更多背景知识:

我们正在使用<input type="date" />并将盒中香蕉分成()和[](例如:https://stackoverflow.com/a/39890184/1256072)。 这当然会使用parseDate混淆每个组件,而且我们也不能使用[(ngModel)]也很烦人。 因为我们没有找到任何方法将ngModel指令扩展到例如myModelDate自动拆分[()]并应用解析方法,我们创建了自己的组件来实现ControlValueAccessor,因此我们可以将其与[(ngModel)]绑定。此组件模板仅包含此一个输入类型=日期字段。我们现在希望我们自己的组件的行为与任何其他输入一样,因此我们只需使用<my-date [disabled]="true"/><my-date [attr.whatever]="something" />,而无需通过@Input@Attribute,...明确定义所有属性。

1 个答案:

答案 0 :(得分:0)

在要在子组件中公开的属性上使用gsutil -m acl -r set public-read gs://abcd-new 装饰器。

例如:

@Input()