gpt4 book ai didi

javascript - 未调用可观察结果构造函数

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:43 26 4
gpt4 key购买 nike

每当可观察对象的结果类型为 MessageResult 时,我都会尝试运行一些代码

调用服务

this.campaignService.postCreate(this.authService, {
CampaignCode: this.campaignCode,
Year: this.year,
StartDt: this.startDt,
EndDt: this.endDt,
InhouseDt: this.inhouseDt,
MailDt: this.mailDt,
MarketingId: this.marketingId,
TemplateId: this.templateId
}).subscribe(x => {
console.log(x.text);
//this doesn't event work -> x.fire; or x.fire();
});

然后是服务

  postCreate(refAuthService, formResult: any): Observable<MessageResult> {
return refAuthService.PostWithHeader("http://api.positive.local:38880/api/campaign/postcreate", formResult)
.map(this.extractData).catch(this.handleError);
}

消息结果

import { ToastsManager } from 'ng2-toastr/ng2-toastr';
import { OnInit } from '@angular/core';

export class MessageResult {
constructor(
public text: string,
public type: string,
public title: string,
private toastr: ToastsManager) {
this.fire();
}

fire() {
console.log("that");
if (this.type == 'error')
this.toastr.error(this.text, this.title, {
toastLife: 2500
});
else if (this.type == 'success')
this.toastr.success(this.text, this.title, {
toastLife: 2500
});
}

ngOnInit() {
console.log("this");
}

}

这个和那个都没有显示在控制台中。

目标是让每个可观察到的结果(即 MessageResult)无需额外编码即可触发消息。

最佳答案

一个想法是尝试将 fire() 函数移动到服务中,让它接受类型为 MessageResult 的参数并添加另一个 map 对您的可观察对象起作用:

postCreate(refAuthService, formResult: any): Observable<MessageResult> {
return refAuthService.PostWithHeader("http://api.positive.local:38880/api/campaign/postcreate", formResult)
.map(this.extractData)
.map(data => this.fire(data) //<-- ADD THIS
.catch(this.handleError);
}

这样,fire 函数将在订阅可观察对象时触发,并且不需要在使用服务的组件中进行额外编码。

通常,我使用接口(interface)而不是类来映射来自可观察对象的数据,尽管类可以正常工作。但我将任何逻辑都限制在组件而不是数据模型中。

关于javascript - 未调用可观察结果构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42960096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com