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

Javascript 未调用可观察结果构造函数,javascript,angular,typescript,Javascript,Angular,Typescript,每当一个可观察对象的结果类型为MessageResult时,我都会尝试运行一些代码 呼叫服务 this.campaignService.postCreate(this.authService, { CampaignCode: this.campaignCode, Year: this.year, StartDt: this.startDt, EndDt: this.endDt,

每当一个可观察对象的结果类型为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);
}
控制台中既没有显示这个也没有显示那个


目标是让每个可观察到的结果(即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);
}
postreate(重新授权服务,formResult:any):可观察{
返回refAuthService.PostWithHeader(“http://api.positive.local:38880/api/campaign/postcreate“,formResult)
.map(此.extractData)

.map(data=>this.fire(data)//希望我不必做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);
}