用于双向属性绑定的Angular2修饰符
在Victor Savkin的文章中,演示了如何使用输入和输出属性绑定-用于双向属性绑定的Angular2修饰符,angular,angular2-directives,angularjs-bindings,Angular,Angular2 Directives,Angularjs Bindings,在Victor Savkin的文章中,演示了如何使用输入和输出属性绑定- <todo-cmp [model]="todo" (complete)="onCompletingTodo(todo)"></todo-cmp> @Component({selector: 'todo-cmp'}) class TodoCmp { @Input() model; @Output() complete = new EventEmitter(); // TypeScript s
<todo-cmp [model]="todo" (complete)="onCompletingTodo(todo)"></todo-cmp>
@Component({selector: 'todo-cmp'})
class TodoCmp {
@Input() model;
@Output() complete = new EventEmitter(); // TypeScript supports initializing fields
}
@组件({选择器:'todo cmp'})
类TodoCmp{
@输入()模型;
@Output()complete=neweventemitter();//类型脚本支持初始化字段
}
输入属性用@input()修饰,而输出属性用@output()修饰。
如何声明将具有双向属性绑定的属性?
示例:假设根面板组件具有“建议”属性(类型为string),而searchPanel具有“getSuggestions”属性。现在我希望这两个属性以两种方式相互绑定。
我试过-
rootpanel.html:
<search-panel [(getSuggestions)]="suggestions"> </search-panel>
但是我在searchPanel组件中声明getSuggestions属性时遇到了问题。
getSuggestions属性--字符串或EventEmitter的类型应该是什么
请建议。如果您希望从父组件进行双向模型绑定:
[(model)]
您的子组件中需要以下内容:
@Input() model: string;
@Output() modelChange:EventEmitter<string>;
从父组件的角度来看,[(model)]
相当于:
[model]="model" (modelChange)="model=$event"
这样,当子组件内的模型属性发生更改时,模型中的更改会通过双向绑定向上传播,同步所有绑定的模型。如果要使用[(getSuggestions)]
-style进行双向绑定,请声明如下字段
类TodoCmp{
@输入建议;
@Output()getSuggestionChange=neweventEmitter();
onClick(){
getSuggestions='someValue';
getSuggestionChange.emit(getSuggestions);
}
}
getSuggestions
对于这样的输入/输出组合可能不是一个好的选择,但它应该演示它们是如何连接的。输出需要与输入具有相同的名称,并进行额外的更改
。
如果此命名方案不适合,请使用您的组件,如
建议的方法pixelbits正是您应该如何做到这一点,但是如果您在一个组件上有多个双向数据绑定属性,或者甚至在代码库中有一个频繁更改的属性,我为其创建了一个装饰器。
如果您使用的是npm,则是。
如果需要代码,只需转到gihub页面
有了此功能,您可以直接使用:
从'@angular/core'导入{Component};
从“双向装饰器”导入{TwoWay};
@组成部分({
选择器:“应用程序示例”,
templateUrl:'./example.component.html',
样式URL:['./example.component.scss']
})
导出类ExampleComponent{
@双向
公共文本:字符串;
@双向
公众计数:数字;
}
谢谢,这很有帮助。谢谢你的解释。
[model]="model" (modelChange)="model=$event"