我试图显示一个对象数组,多个函数将不得不改变它。所以我试着让它成为可观察的(也许我错了)。
打字版本:2.7.2 rxjs:6.2.1角cli:6.0.8节点:8.11.3角:6.0.7
我的服务(IsolementService)中有一个变量声明为:
public listeIsolements$: Observable<isolementInterface>;
我的服务主要有两种方法
getIsolements(mydate1:any, mydate2:any){
let dateToSend = ""
let headers = {headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded'})};
this.http.post('foo/mywebservice.php', dateToSend, headers).subscribe((data: Observable<isolementInterface>) => {
this.listeIsolements$ = data;
});
}
alteredList(mode:string){
// Some alteration to listeIsolements$, without http call
}
接口:
export interface RENOUVELLEMENT {
_PERSON_ID?: any;
_ACTIVITY_ID: string;
_UF: string;
_PRESCRIPTEUR_RENOUVELLEMENT: string;
_ISOLEMENT_CH_STANDARD?: any;
_ISOLEMENT_COMMENTAIRE?: any;
_MODIF_MESURE_SOIN_DT_TM: string;
_MOTIF_MAINTIEN?: any;
_DATE_RENOUVELLEMENT: string;
}
export interface ISOLEMENT {
_PERSON_ID: string;
_ACTIVITY_ID: string;
_ACTIVITY_ID_FIN: string;
_NOM: string;
_PRENOM: string;
_IPP: string;
_IEP: string;
_DATE_NAISSANCE: string;
_SEXE: string;
_DEBUT_SEJ: string;
_FIN_SEJ: string;
_PRESCRIPTEUR: string;
_DEBUT_ISOLEMENT: string;
_FIN_ISOLEMENT: string;
_UF: string;
_CHAMBRE_STANDARD: string;
_RAISON_CHAMBRE_STANDARD: string;
_PATIENT_INFORME_MODALITE: string;
_FAMILLE_PREVENU: string;
_MODE_HOSPI: string;
_INDICATIONS: string;
_MESURES_PREVENTIVES: string;
_CIRCONSTANCES?: any;
_MED_PRESCRI_SORTIE: string;
_OBSERVATIONS_SORTIE?: any;
_RENOUVELLEMENTS: RENOUVELLEMENT[];
}
export interface isolementInterface {
ISOLEMENTS: ISOLEMENT[];
}
我的服务是呼叫组件:
constructor(public IsolementService : IsolementService, public myGestionUserService : GestionUserService) { }
ngOnInit() {
}
/*________________________________________________________________________________________________________*/
// Fonction call on submit
onSubmit(form: NgForm) {
const send_date_deb = form.value['date_deb'];
const send_date_fin = form.value['date_fin'];
this.IsolementService.getIsolements(send_date_deb, send_date_fin);
}
但是当我编译时,我有一个错误TS2495:类型“Observable”不是数组或字符串类型。我可以向谁申报我需要什么?
谢谢!
编辑-查看代码:
<tr *ngFor="let iso of IsolementService.listeIsolements$ | async">
<td class="filterable-cell">{{ iso._NOM }}</td>
<td class="filterable-cell">{{ iso._PRENOM }}</td>
<td class="filterable-cell">{{ iso._IPP }}</td>
<td class="filterable-cell">{{ iso._IEP }}</td>
<td class="filterable-cell">{{ iso._DATE_NAISSANCE }}</td>
<td class="filterable-cell">{{ iso._SEXE }}</td>
<td class="filterable-cell">{{ iso._DEBUT_SEJ }}</td>
<td class="filterable-cell">{{ iso._FIN_SEJ }}</td>
<td class="filterable-cell">{{ iso._DEBUT_ISOLEMENT }}</td>
<td class="filterable-cell">{{ iso._FIN_ISOLEMENT }}</td>
<td class="filterable-cell"></td>
<td class="filterable-cell">{{ iso._PRESCRIPTEUR }}</td>
<td class="filterable-cell">{{ iso._UF }}</td>
<td class="filterable-cell"></td>
<td class="filterable-cell">{{ iso._CHAMBRE_STANDARD }}</td>
<td class="filterable-cell">{{ iso._RAISON_CHAMBRE_STANDARD }}</td>
<td class="filterable-cell">{{ iso._PATIENT_INFORME_MODALITE }}</td>
<td class="filterable-cell">{{ iso._FAMILLE_PREVENU }}</td>
<td class="filterable-cell">{{ iso._MODE_HOSPI }}</td>
<td class="filterable-cell">{{ iso._INDICATIONS }}</td>
<td class="filterable-cell">{{ iso._MESURES_PREVENTIVES }}</td>
<td class="filterable-cell">{{ iso._CIRCONSTANCES }}</td>
<td class="filterable-cell">{{ iso._MED_PRESCRI_SORTIE }}</td>
<td class="filterable-cell">{{ iso._OBSERVATIONS_SORTIE }}</td>
</tr>
let localArray: Observable<MyObject>[] = [];
我知道出了什么问题。你打了个电话,然后你就订阅了。订阅可观察对象总是在其发出后返回可观察对象的值。如果要将变量声明为可观察对象本身,只需将其指定为调用:
this.listeIsolements$ = this.http.post('foo/mywebservice.php', dateToSend, headers);
如果你只想要可观察的本身,你不需要订阅它。如果您想稍后在视图中使用该值,您可以简单地在那里管道它(或者稍后在组件中订阅它,如果这是您想要的)。
(编辑):在您看来,将其更改为:
<div *ngIf="IsolementService.listeIsolements$ | async as isolements">
<tr *ngFor="let iso of isolements.ISOLEMENTS">
从*ngFor分离异步管道,否则它将无法工作。
我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块
我有一个servers对象数组,其中在数组中有另一个可观察对象数组,其键是[securityGroups]。 我有另一个securitygroupsArray数组,在这里我使用API来获取所有SecurityGroups。 我需要在securityGroups键中查找服务器阵列中该服务器上安全组的所有名称,并在一个选项中只显示我的其他阵列(securityGroupArray)的ngfor的不同名
Observables 是多个值的惰性推送集合。它填补了下面表格中的空白: 单个值 多个值 拉取 Function Iterator 推送 Promise Observable 示例 - 当订阅下面代码中的 Observable 的时候会立即(同步地)推送值1、2、3,然后1秒后会推送值4,再然后是完成流: var observable = Rx.Observable.create(functio
问题是: 使用及其其他功能不是更好吗?
我有一个返回用户对象的角度服务。用户对象有自己的属性和一组墙。服务向调用组件返回一个可观察的。在该服务中,我能够从http服务返回的json创建用户对象。但是,当我订阅组件中的服务时,返回的对象为null。我做错了什么?
学习角得到服务和组件和可观察性。 我正在尝试在我的演示应用程序中实现暗模式。该控件由一个服务完成,该服务根据浏览器默认值(如果找到)设置暗主题。 它在应用程序组件中初始化,以便以后在应用程序中放置控制开关。 暗模式从布尔值开始工作,因此为true或false。据我所知,使用一个可观察对象是不够的,因为我希望多个订阅者都以两种方式绑定到订阅,每种方式在服务中切换这些可观察对象。到目前为止,我很肯定这