Angular 使用BehaviorSubject的数据服务不工作
我正在尝试在Angular 5中实现客户端数据服务。我对Angular非常陌生,这是我第一次尝试实现数据服务 这是我的DataService类:Angular 使用BehaviorSubject的数据服务不工作,angular,behaviorsubject,Angular,Behaviorsubject,我正在尝试在Angular 5中实现客户端数据服务。我对Angular非常陌生,这是我第一次尝试实现数据服务 这是我的DataService类: @Injectable() export class DataService { private url: string; private binomialResultSource = new BehaviorSubject(new Observable<IBinomialResult>()); public binomialResult
@Injectable()
export class DataService {
private url: string;
private binomialResultSource = new BehaviorSubject(new Observable<IBinomialResult>());
public binomialResult = this.binomialResultSource.asObservable();
constructor(
private http: HttpClient) {
this.url = "api/BinomialResult/GetBinomialResult/0/0";
this.binomialResultSource.next(this.http.get<IBinomialResult>(this.url));
}
getBinomialResult(inputValues: any) {
this.url = "api/BinomialResult/GetBinomialResult/" + inputValues.failureCount + "/" + inputValues.demandCount;
this.binomialResultSource.next(this.http.get<IBinomialResult>(this.url));
}
//private url: string;
//public binomialResult: any;
//public binomialResultSource: BehaviorSubject<IBinomialResult>;
//constructor(
// private http: HttpClient) {
// this.url = "api/BinomialResult/GetBinomialResult/0/0";
// this.binomialResult = this.http.get<IBinomialResult>(this.url);
// this.binomialResultSource = new BehaviorSubject<IBinomialResult>(this.binomialResult);
//}
//getBinomialResult(inputValues: any) {
// this.url = "api/BinomialResult/GetBinomialResult/" + inputValues.failureCount + "/" + inputValues.demandCount;
// this.binomialResult = this.http.get<IBinomialResult>(this.url);
// this.binomialResultSource.next(this.binomialResult);
//} }
下面是我目前用于测试的组件模板的一部分:
<h4>Summary</h4>
<pre>{{binomialResult.Output}}</pre>
<p>
This is a test: f = {{binomialResult.Failures}}, D = {{binomialResult.Demands}}
</p>
摘要
{{binomialResult.Output}
这是一个测试:f={{binomialResult.Failures}},D={{{binomialResult.requires}
我在网上找到了很多例子,这代表着我尽了最大的努力,但到目前为止没有成功。我最好的猜测是binomialResult没有反映binomialResultSource中的内容。任何提示都将不胜感激 你真的,真的想得太多了。如图所示,应将其缩减为该值
@Injectable()
导出类数据服务{
构造函数(私有http:HttpClient){}
getBinomialResult(InputValue:any):可观察{
常量url=`api/BinomialResult/GetBinomialResult/${inputValues.failureCount}/${inputValues.demandCount}`;
返回此.http.get(url);
}
}
导出类BinomialResultComponent{
二项结果:i项结果;
输入形式:FormGroup;
建造师(
私有数据服务:数据服务,
私有表单生成器:表单生成器
) {
this.inputForm=this.formBuilder.group({
“优先级类型”:[“”],
“失败计数”:[“”],
“demandCount”:[“”]
});
}
onSubmit(){
this.dataService.getBinomialResult(this.inputForm.value)
.subscribe(result=>this.binomialResult=result);
}
}
总结
{{binomialResult.Output}
这是一个测试:f={{binomialResult.Failures}},D={{{binomialResult.requires}
Ok,这确实有效,并提供了即时解决方案。谢谢你!我仍然不明白为什么当我直接订阅binomialResult时什么也得不到,或者为什么我的BehaviorSubject不能像网络上的信息所说的那样工作。但是,我可以使用您的解决方案,直到我的理解更好。
<h4>Summary</h4>
<pre>{{binomialResult.Output}}</pre>
<p>
This is a test: f = {{binomialResult.Failures}}, D = {{binomialResult.Demands}}
</p>
@Injectable()
export class DataService {
constructor(private http: HttpClient) { }
getBinomialResult(inputValues: any): Observable<IBinomialResult> {
const url = `api/BinomialResult/GetBinomialResult/${inputValues.failureCount}/${inputValues.demandCount}`;
return this.http.get<IBinomialResult>(url);
}
}
export class BinomialResultComponent {
binomialResult: IBinomialResult;
inputForm: FormGroup;
constructor(
private dataService: DataService,
private formBuilder: FormBuilder
) {
this.inputForm = this.formBuilder.group({
'priorType': [''],
'failureCount': [''],
'demandCount': ['']
});
}
onSubmit() {
this.dataService.getBinomialResult(this.inputForm.value)
.subscribe(result => this.binomialResult = result);
}
}
<h4>Summary</h4>
<div *ngIf="binomialResult">
<pre>{{ binomialResult.Output }}</pre>
<p>
This is a test: f = {{ binomialResult.Failures }}, D = {{ binomialResult.Demands }}
</p>
</div>