Angular2注入的自定义服务未定义
发布时间:2020-12-17 17:22:32 所属栏目:安全 来源:网络整理
导读:我试图将一个自定义服务(MessageService)注入另一个自定义服务(ItemService).它抛出一个错误MessageService在ItemService中被取消. 但是服务(MessageService和ItemService)都可以正常使用组件. mani.ts import { platformBrowserDynamic } from '@angular/pl
我试图将一个自定义服务(MessageService)注入另一个自定义服务(ItemService).它抛出一个错误MessageService在ItemService中被取消.
但是服务(MessageService和ItemService)都可以正常使用组件. mani.ts import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app.module'; const platform = platformBrowserDynamic(); platform.bootstrapModule(AppModule); app.module.ts import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule,ReactiveFormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { AppComponent } from './app.component'; import { routing,routedComponents } from './app.routing'; import { ItemService } from './services/item.service'; import { MessageService } from './services/message.service'; import './rxjs-extensions'; @NgModule({ imports: [ BrowserModule,routing,FormsModule,ReactiveFormsModule,HttpModule,],declarations: [ AppComponent,routedComponents],providers: [ MessageService,ItemService ],bootstrap: [ AppComponent ] }) export class AppModule { } message.service.ts import { Injectable } from '@angular/core'; import { Subject } from 'rxjs/Subject'; import { Message } from '../models/message'; @Injectable() export class MessageService { constructor() { } showError(msg: string) { console.log('MessageService Alert::'+msg); } } item.service.ts import { Injectable } from '@angular/core'; import { Http,Response,Headers,RequestOptions } from '@angular/http'; import { Item } from '../models/item'; import { MessageService } from '../services/message.service' import { Observable } from 'rxjs'; @Injectable() export class ItemService { private restUrl = 'http://localhost:3000/'; // URL to web api constructor( private http: Http,private msgService: MessageService) { } getAllItems(): Observable<Item[]> { return this.http .get(this.restUrl+'items') .map( (res: Response) => res.json() as Item[]) .catch(this.handleError); } private handleError(error: any): Promise<any> { console.error('An error occurred',error); let errorMsg = error.message || error; this.msgService.showError("errorMsg"); // msgService is undefined here. return Promise.reject(errorMsg); } } 这里msgService在ItemService中是未定义的. 解决方法
问题是这个.不是ItemService
.catch(this.handleError); 应该 .catch(this.handleError.bind(this)); 为了这.继续指向handleError()中的当前类实例 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |