B_Moduleが所有するB_ComponentからA_Moduleが所有するA_Componentのメソッドを呼び出そうとしていますが、B_ComponentコンストラクターにパラメーターとしてA_Componentを追加するとすぐに、次のエラーが発生します。
NullInjectorError:A_Componentのプロバイダーがありません!
編集:2つのコンポーネントは親/子ではありません。それらのモジュールはapp.moduleによってインポートされます
(簡潔にするために要約されたコード)
A_Module:
import { A_Component } from '...'
@NgModule({
imports: [...],
declarations: [A_Component],
exports: [A_Component],
})
export class A_Module { }
B_Module:
import { A_Module } from '...'
import { B_Component } from '...'
@NgModule({
imports: [A_Module],
declarations: [B_Component]
})
export class B_Module { }
A_Component:
export class A_Component {
someMethod() {...}
}
B_Component:
import { A_Component } from '...'
export class B_Component {
constructor(public a_Component: A_Component)) {} //this param causes error
callSomeMethod() {
this.a_Component.someMethod();
}
}
これは、モジュール間でコンポーネントメソッドを呼び出す方法ではありませんか?これを行う唯一の方法はサービスを使用することですか?
コンポーネントの相互作用の公式ドキュメントを参照してください。
ViewChildを使用して、コンポーネント内で宣言されたコンポーネントのメソッドのみを呼び出すことができます。
2つの異なるコンポーネントを相互作用させたい場合は、共通のサービスを介して実行する必要があります。
@diopsideからのポイントの後に更新
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加