繁体   English   中英

订阅一个在 Angular 中不起作用的可观察对象

[英]Subscribe to a observable not working in Angular

我正在尝试查看是否可以订阅observable类型的变量。 当我用[(ngModel)]绑定输入时,更改似乎不会触发。

代码:

@Component({
  selector: 'alert',
  template: '<input type="text" [(ngModel)]="test" />'
})

export class alertComponent {
  default:String: 'testValue';
  test = Observable.of(this.default).subscribe(x => {
    console.log(x); // only logs for first time
  });
}

RxJS 6 及以上

import { of } from 'rxjs';

of("testValue").subscribe(x => {
  console.log(x)
})

参考无法在 RxJs 6 和 Angular 6 中使用 Observable.of

Observable.of 只触发一次。 这就是它第一次为您工作的原因。

如果您想触发某些操作,您可以直接将其绑定到 ngModelChange 事件,而不是将其转换为 observable 并订阅它?

您可能也对这个问题感兴趣如何使输入可观察?

如果您想将模型值作为可订阅对象:

@Component({
  selector: 'alert',
  template: `
    <input type="text" 
        [(ngModel)]="myValue"
        (ngModelChange)="myValue$.next($event)"
        (blur)="touched$.next($event)"
/>
    `
})

export class alertComponent {
  default:String: 'testValue';
  myValue: string;
  myValue$ = new Subject<string>();
  touched$ = new Subject<any>();

}

我在 blur 事件上添加了处理程序,只是为了表明您可以在任何类型的事件上使用它。

另一种操作任何类型事件的方法是 rxjs fromEvent方法。

如果您从未见过“$”后缀:将它添加到任何可订阅的内容是一种流行的命名约定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM