Angular 使用BehaviorSubject的数据服务不工作

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

我正在尝试在Angular 5中实现客户端数据服务。我对Angular非常陌生,这是我第一次尝试实现数据服务

这是我的DataService类:

@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>