我有成分B,C,d,從A類繼承角2:注射服務手動
我想用A類服務,但我不知道怎麼把它注射,無需進它來自它的孩子。
我想什麼是正常的注射: constructor(pageName: string = null, translate: TranslateService) {
但是當我做super()
建設A級,是因爲我沒有提供第二個參數拋出一個錯誤。
有沒有辦法使用Angular2注入父類?
角版本我不得不使用方法是:2.2.1
編輯:
一些示例情況: 我有很多的網頁,每個人都可以顯示一個加載器。相反,從每一個頁面,每次注射的裝載機和管理裝載機的,我想要做的:
export class BaseComponent {
constructor(private loader: LoadingService) {}
showLoading() {
this.loader.show();
}
}
然後從組件本身繼承:
@Component({
selector: "page-login",
providers: [UsersService],
templateUrl: "login.html"
})
export class LoginPage extends BaseComponent {
constructor(private usersService: UsersService) {
super();
}
}
現在LoginPage
有一個方法showLoading
從它是父母。
這可能適合你:http://stackoverflow.com/questions/37117698/angular2-use-imported-libs-from-base-class/37117732#37117732。 – pixelbits
@pixelbits謝謝,剛剛發現了另一個解決方法。我將TranslateService注入到應用程序中,然後將該實例保存在一個全局變量中,該變量是我數據存儲的一部分(我知道,不應該這樣做),並且它工作得很好。 – Amit
我不會稱這是一個很好的模式。而你目前的例子並不反映這個問題。沒有TranslateService。相反,有showLoading方法,我沒有看到它應該在那裏的原因。 – estus