私はAngular2を学びたいと思っていますが、少し問題があります。私はその後、私はinput.component
サービスとプロバイダによる継承と多型
import { Component } from "@angular/core";
import { ParentService } from "./service/parent.service";
@Component({
selector: 'app-input',
templateUrl: './input.component.html'
})
export class InputComponent {
constructor(private parentService: ParentService) {}
}
そして、私のapp.component
に呼ばれるコンポーネントのクラスを持っている
export class ChildService extends ParentService {
}
呼ばParentService
export abstract class ParentService {
}
とParentService
を拡張し、別のサービスクラスと呼ばれる抽象サービスクラスを持っています私はChildServiceのインスタンスを提供します
import { Component } from '@angular/core';
import { ChildService } from './service/child.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [ChildService]
})
export class AppComponent {
}
ただし、これは機能しません。それは罰金構築しますが、アプリを実行しているとき、私は エラーが出る:
EXCEPTION: Error in ./AppComponent class AppComponent - inline template:4:16 caused by: No provider for ParentService!
これを行うことは可能ですか? input.component
にParentService
を知りたいだけです。私は実際にそれが実装を知ってほしくはありません。
あなたはこのパターンを避けるべきです –
@AluanHaddadあなたはそれが悪い理由を詳述できますか? – eric
継承は、あらゆる言語、特にJavaScriptで最小限に抑える必要があります。 JavaScriptにはインターフェイスがなく、TypeScriptインターフェイスが構造的なので、インターフェイスとしてクラスを使用しようとする人が多くいます。これはひどい練習です。実装するのではなく、インタフェースをプログラミングする必要があります。マニフェストインターフェイスのない言語でも同様です。 –