別のサービスにサービスを注入するときに問題が発生しました。 handleServiceがhandleErrorメソッドを使ってサーバーからデータを取得しました。 handleErrorメソッドからエラーをスローするAlertServiceがあります。 私は既にCoreServiceにcontactServiceとAlertServiceの両方を宣言しています。 しかし、alertService.submitNewMessageを呼び出すと、this.alertServiceが定義されていないことが示されました。 他のサービスのインジェクションサービスの問題点2
@Injectable()
export class AlertService {
private $currentMessages: BehaviorSubject<string> = new BehaviorSubject('');
public currentMessages: Observable<string> = this.$currentMessages.asObservable();
constructor() { }
submitNewMessage(msg: string): void {
this.$currentMessages.next(msg);
}
}
を助けてくださいと連絡先サービス
@Injectable()
export class ContactService {
private contactsUrl = 'http://localhost/customers';
constructor(
private http: Http,
private router: Router,
private alertService: AlertService
) { }
getContactsFromService(): Observable<SubmitCustomerHttp[]> {
return this.http.get(this.contactsUrl)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
return HttpHelper.extractData(res);
}
handleError(error: Response | any) {
let errMsg: string;
console.log('Receive error: ', error);
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
if (error.status === 500 || 400 || 404) {
window.alert(errMsg);
this.alertService.submitNewMessage(errMsg);
return errMsg;
}
} else {
errMsg = error.message ? error.message : error.toString();
console.log('Error Message: ', errMsg);
return null;
}
}
}
私のコアモジュール
@NgModule({
imports: [
CommonModule,
HttpModule,
JsonpModule
],
declarations: [],
providers: [
AlertService,
ContactService,
]
})
export class CoreModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: CoreModule,
providers: [
AlertService,
ContactService,
]
};
}
}
はどこalertServiceのコードです.smitmitNewMessage? eError:プロパティに未定義 – Sajeetharan
@Sajeetharan申し訳ありませんが、私のミス、私はあなたが私はあなたのコメントのように変更されましたが、まだそのメッセージが@Injectable – TheRemjx
それを修正します。ご協力いただきありがとうございます。何度か再構築した後、 'this' contextは修正されました –