嗨,我是棱角分明的新人。
我不知道为什么我不能在我的Observable中设置新值
我的代码:
error: expected 'logs (POD | TYPE/NAME) [CONTAINER_NAME]'.
POD or TYPE/NAME is a required argument for the logs command
此代码返回resultJob: Observable<any> = Observable.of("PENDING");
ngOnInit() {
this.resultJob.subscribe(result => {
result.next("SUCCESS")
result.complete()
})
}
答案 0 :(得分:5)
Observable没有next();仅限于Subject和BehaviorSubject,它扩展了Subject(并且都扩展了Observable)。
您需要做的是:
resultJob: Subject<string> = new BehaviorSubject<string>("PENDING");
与Subject相比,BehaviorSubject使用在流中推送的第一个值进行初始化。这似乎是你想要做的。
结果是字符串类型,而不是Observable类型。您想在resultJob上调用next(),而不是在结果(流内的元素)上调用。但我不明白为什么你在订阅中这样做。您将以这种方式获得循环调用:您在流中推送一个新元素,并通过推送另一个元素来对其进行反应等等......
答案 1 :(得分:3)
这里是观察者的示例。有关组件交互的更多信息,请参阅此文档Component interaction
第1步: - app.module.ts
import { UserService } from './user.service';
@NgModule({
providers: [
UserService
]
})
第2步: - 的 user.service.ts 强>
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class UserService {
users: any = null;
nativeWindow: any;
private userAddedSource = new Subject<any>();
userAdded$ = this.userAddedSource.asObservable();
addNewUser(user) {
this.userAddedSource.next({ user: user });
}
}
第3步: - 在您的组件中添加此代码以发送数据
this.userService.addNewUser({name:'xyz'}); // your data
第4步: - 在您的接收器组件上
ngOnInit() {
this.userService.userAdded$.subscribe(data => {
console.log(data.user);
});
}