私の角4に関する知識は初心者レベルです。私はいくつかのように、以下のコンポーネントで共有モジュールからサービスを提供しようとしています:共有モジュールからのサービスが表示されていません - 角度4
プロジェクト構造
app
|_ component1
|_ .css
|_ .html
|_ .component.ts
|_ .module.ts
|_ component2
|_ //same as above
|_ shared
|_ messages.components.ts
|_ number.directive.ts
|_ shared.module.ts
|_ validation.service.ts
問題今、私は私のshared.module.tsなどを持って
以下:
//Certain other imports
import { ValidationService } from './validation.service';
@NgModule({
declarations: [...],
imports : [....],
exports : [....],
providers : [ValidationService]
});
export class SharedModule{}
B
:ELOWはvalidation.service.ts
import { Injectable } from '@angular/core';
@Injectable()
export class ValidationService {
static validateText(control) {
//do something
}
}
の内容は、今私はcomponent2
でValidationService
を消費しようとしていて、そのために、私は以下のようにcomponent2
のモジュールでSharedModule
をインポートしたありますcomponent2.module.ts
import { SharedModule } from './../shared/shared.module';
//some other imports
@NgModule({
declarations: [],
imports: [SharedModule]
})
export class Component2Module { }
とcomponent2.com ponent.tsは以下の通りです:
import { SharedModule } from './../shared/shared.module';
//other imports
@Component({
selector: 'app-root',
templateUrl: './component2.component.html',
styleUrls: ['./component2.component.css']
})
export class Component2Component implements OnInit{
constructor(){
}
ngOnInit() {
this.sampleForm = new FormGroup({
sampletxt : new FormControl('', [Validators.required , ValidationService.validateText]), //this method here
});
}
}
しかし、私は上記のファイルに再度インポートしない限り、このValidationService
を使用することはできませんよ。
私はコンポーネント2モジュールにSharedModule
をインポートしたとSharedModuleはすでにService
を提供している?ので、私のcomponent2
でそれをインポートせずValidationService
を使用することはできませんよ、なぜここに私の質問ですか私はここで何が欠けていますか?これはまったく不可能ですか?
のようにそれを使用することができます。その後
は簡単いただきありがとうございます。 1つの小さな疑いがここにあります。私はサービス内で静的メソッドを持っています。コンストラクタに追加するには、ここでそれが必要でしょうか? –
サービスで静的メソッドを使用しないでください。サービスの静的メソッドを使用する場合は、実際にはサービスではなく、そのように扱うべきではありません。このようなクラスを 'imports:[...]'や 'providers:[...]'に追加する必要はありません。TypeScriptのインポートが必要です。 –
ようこそ。良いアイデア。 Angularは、すべてを簡単にテストできるフレームワークを作るために長い道のりを歩んだ。静的メソッドを使用すると、この大きな利点が再び働きます。 –