【问题标题】:listening to a model in component angular 2聆听组件角度 2 中的模型
【发布时间】:2016-04-29 02:23:32
【问题描述】:

我正在使用 Angular 2。我有一个场景,我有一个组件、接口和指令。

该指令用于自动建议,我的界面用作模型。

因此,每当用户选择一个值时,我都会更新模型,并且有一种方法可以让我的组件监听模型的变化。

directive - model - component interaction

组件将如何监听我通过指令进行的模型更改?还可以使用模型来保存数据吗?

【问题讨论】:

  • 组件如何监听我通过指令所做的模型更改?也可以使用模型来保存数据吗?
  • 你应该用问题更新问题,这比在评论中说要好。

标签: angular angular2-directives angular2-changedetection


【解决方案1】:

使用输入、输出和绑定,例如:

(不是真正的自动完成,但它应该让你开始)

@Component({
  selector: 'auto-complete',
  template: `
  <select [(ngModel)]="value" (ngModelChange)="valueChange.emit($event)">
    <option *ngFor="#val of values" [value]="val">{{val}}</option>
  </select>`})
export class AutoCompleteComponent {
  @Input() values:string[];
  @Output() valueChange:EventEmitter<string> = new EventEmitter<string>();
  value:string;
}
@Component({
  selector: 'parent',
  directives: [AutoCompleteComponent],
  template: `
<auto-complete [value]="options" (valueChange)="onUpdate($event)"></auto-complete>
`})
export class AppComponent {
  options = ['a', 'b', 'c', 'd', 'e'];
  onUpdate(event) {
    console.log(event);
  }
}

【讨论】:

  • 有没有办法让我可以在我的组件中而不是在模板中监听发出的事件?
  • 可能有办法,但您不应该这样做。 @Output() 只能用于使用(outputName)="..." 进行绑定。可能还有其他方法。你想解决什么问题?
  • 我为 select2 创建了一个指令(用于自动完成)一个基本版本,只需在元素上调用 select2。该指令在我的应用程序中多次使用。我想在用户选择任何东西时触发一个事件。这个事件应该被组件监听。并且可以有多个组件使用这个指令。那么,有没有一种方法可以让我在整个应用程序中使用的每个实例都有不同的事件?
  • 不确定你的意思。您可以使用不同的参数调用事件处理程序,例如(valueChange)="onUpdate($event, 'autocompletion1')。这是你要找的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多