Typescript angular 5 observable无法从输入中获取值

时间:2018-04-20 13:54:46

标签: angular typescript observable

我是打字稿的新手。而且我不知道为什么我的帖子变量不能根据输入而改变。

home.component.html

#view
request.es ...

home.component.ts

<input type="text" [(ngModel)]="linearsvcParameters.C"/>
<button (click)="TrainModel()" type="button" >TRAIN MODEL
</button>

}

ClfService .service.ts

public linearsvcParameters: LinearsvcParameter = new LinearsvcParameter(); //this value cant change

public TrainModel(){
this.clfService.TrainModel(this.linearsvcParameters).subscribe((modelAccuracy => {  
  this.modelAccuracy = modelAccuracy;
  console.log(modelAccuracy);
}));

Linearsvc Class

    public TrainModel(linearsvcParameters: LinearsvcParameter): Observable<ModelAccuracy>{        
    console.log('classification.ts' + LinearsvcParameter);
    return this.http.post<ModelAccuracy>(SERVER_URL + 'train', linearsvcParameters);

}

}

你可以帮我解释一下这里想念的吗?

3 个答案:

答案 0 :(得分:1)

问题解决了,谢谢你的回应。我忘记添加表单模块,因此我将此模块添加到 app.module.ts

import {FormsModule, ReactiveFormsModule} from "@angular/forms";

答案 1 :(得分:0)

此问题是您绑定到对象C中的linearsvcParameters属性,

[(ngModel)]="linearsvcParameters.C"

但是当响应从服务到达时,您没有更新该属性,而是this.modelAccuracy = modelAccuracy;

您必须选择,绑定到this.modelAccuracy的{​​{1}}属性或更新订阅中的该属性。

home.component

<强>更新 您拥有的另一个选项是更改绑定到您正在更新的属性。

this.linearsvcParameters.C = modelAccuracy;

让我知道它是如何运作的!

答案 2 :(得分:-1)

据我所知,问题不在于TS,而在于你如何使用Observable。您应该在构造函数或Observable方法中订阅NgOnInit。 之后,您将能够使用从observable传递给property的值。