Angular:我可以将Observable附加到变量吗?

时间:2017-04-14 16:38:17

标签: angular

这似乎不起作用,但没有错误:

@Component({
  selector: 'geofinder',
  template: '<input type="text" class="form-control" [(ngModel)]="cityName" />'
})

export class GeoFinderComponent implements OnInit {

    cityName;

    ngOnInit() {
    let cityNameChange = Observable.from(this.cityName);
    cityNameChange.subscribe((data) => console.log(data));
    }

}

我在这里想要实现的是将一个Observable附加到变量,该变量在其值发生变化时触发。如果我可以将Observable绑定到输入字段的keyup事件,我也会很高兴,但它也拒绝工作。

1 个答案:

答案 0 :(得分:3)

你可以......

使用setter只需在那里添加处理

_cityName;

get cityName() {
  return this._cityName;
}

set cityName(name) {
  // do your stuff here
}

你可以......

拆分[(ngModel)],以便您可以使用(ngModelChange)挂钩调用回调

'<input [ngModel]="cityName" (ngModelChange)="onChange($event)"/>'

cityName;

onChange(newCity) {
  // do your stuff here
}

你可以......

如果需要Observable,请使用Reactive Forms。您可以访问valueChangesObservable

FormControlFormGroup
formControl = new FormControl()

formControl.valueChanges().debounceTime(..).filter(..)

如果您之前从未使用过反应形式,则应阅读我上面链接的指南。