我想看看我是否可以订阅类型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)
})
Observable.of只能触发一次。这就是为什么它是工作在第一时间为您服务。
如果要触发一些动作,你可以直接绑定到ngModelChange事件,而不是将其转换为可观察到的和订阅呢?
您可能也有兴趣在这个问题How can I make an input observable?
如果您希望您的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方法。
如果你从来没有见过的“$”后缀:它是一种流行的命名约定将其添加到任何可订阅的。