Q1。私はいくつかのユーティリティ/ヘルパーメソッド(get/postリクエストなし)を持つ共通のユーティリティクラスを持っています。私が最初に尋ねなければならないことは、単純なクラスであろうと、それとも@Injectable
クラスでなければならないかということです。両方この角2のコンストラクタ注入対直接アクセス
import { Injectable } from '@angular/core';
Injectable()
export class Utils {
}
OR
export class Utils {
}
Q2のように任意のコンポーネントクラスにインポートした後に使用することができるからです。それは、注射だ場合、私は、コンストラクタで注入し、私のコンポーネントクラスでこれをインポートする必要があり、その後、私は
import { Utils } from './../shared/utils';
@Component({
moduleId: module.id,
selector: 'abc',
templateUrl: './abc.component.html',
providers: [Utils]
})
export class DemoComponent implements OnInit {
constructor(private _u: Utils) { }
ngOnInit(): void {
this._u.someMethod();
}
}
のようなしかし、この横に注入されたクラス/サービスのいずれかの方法を使用することができますプロバイダの配列に追加している必要があります私は、直接私がより良いと推奨されるアプローチである1を知りたいと思った短い道
import { Utils } from './../shared/utils';
@Component({
moduleId: module.id,
selector: 'abc',
templateUrl: './abc.component.html'
})
export class DemoComponent implements OnInit {
constructor() { }
ngOnInit(): void {
Utils.someMethod();
}
}
のようなショーである、コンストラクタ・インジェクションなしとプロバイダを追加することなく、サービスのメソッドにアクセスすることができますか?
したがって、すべてのヘルパークラスはコンストラクタインジェクションで使用する必要がありますか?そして、どのようにサービスでコンポーネントのインスタンスを分離することができるのは、常にシングルトンですか? –
厳密にはそうではありませんが、大部分の場合は、それが注入されるべきです。 – Aravind
観測可能なものがなくても、フラットなメソッドだけですか? –