订阅一个观察的不是角工作

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

我想看看我是否可以订阅类型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
  });
}
angular rxjs angular6
3个回答
1
投票

RxJS 6及以上

import { of } from 'rxjs';

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

请参阅Could not use Observable.of in RxJs 6 and Angular 6


0
投票

Observable.of只能触发一次。这就是为什么它是工作在第一时间为您服务。

如果要触发一些动作,你可以直接绑定到ngModelChange事件,而不是将其转换为可观察到的和订阅呢?

您可能也有兴趣在这个问题How can I make an input observable?


0
投票

如果您希望您的modelvalue作为subscribeable:

@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>();

}

我加在模糊事件的处理只是为了表明你可以在任何类型的事件使用此。

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

如果你从来没有见过的“$”后缀:它是一种流行的命名约定将其添加到任何可订阅的。

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