[Angular2装饰器,用于2向属性绑定

问题描述 投票:2回答:3

[摘自Victor Savkin在Angular2 template syntax上的帖子,显示了如何使用输入和输出属性绑定-

<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
}

输入属性用@Input()装饰,而输出属性用@Output()装饰。我应该如何声明一个将具有双向属性绑定的属性?示例:假设rootpanel组件具有“ suggestions”属性(类型为字符串),而searchPanel具有“ getSuggestions”属性。现在,我希望这两个属性可以通过两种方式相互绑定。我试过-

rootpanel.html:

<search-panel [(getSuggestions)]="suggestions"> </search-panel>

但是我在searchPanel组件中声明getSuggestions属性时遇到了麻烦。另外,getSuggestions属性的类型应该是什么-string or EventEmitter<string>

请提出建议。

angular angular2-directives angularjs-bindings
3个回答
3
投票

如果要从父组件进行双向模型绑定:


2
投票

如果要使用[(getSuggestions)]样式进行双向绑定,请声明类似字段


0
投票

推荐的方法pixelbits正是您应该采取的方法,但是如果您在一个组件上具有多个双向数据绑定属性,或者甚至在您的代码库中经常更改一个双向数据绑定属性,我都会为此创建一个装饰器。如果您正在使用npm here。如果需要代码,请转到gihub页面。

© www.soinside.com 2019 - 2024. All rights reserved.