[英]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)
})
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.