2

私はフォームコントロールにアクセスする必要があり、変更された値をリッスンするコミュニティ用のライブラリを作成しました。角2 - エラー:FormControlのプロバイダがありません

ここでは、角度2.3と4.0を使用したときに以前に行ったことがあります。

export class ValidationMessageDirective implements OnInit { 

    @Input('validationMessage') customMessage: string; 
    constructor(private el: ElementRef, private formControl: NgControl, private validationMessageService: ValidationMessageService) { 
     this.target = $(el.nativeElement); 
     this.formGroup = this.target.closest('.form-group'); 

     this.formControl.valueChanges.subscribe((newValue) => { 
      this.checkValidation(); 
     }); 
    } 
} 

しかし、このコードは、角4.1へのアップグレード後はもう機能していません。 ERROR Error: Uncaught (in promise): Error: No provider for NgControl!

私が指示に変化した値をリッスンするための任意の提案やアイデアを: ここに私が手にエラーがですか?

UPDATE 1: ここで私のindex.ts

import { NgModule, ModuleWithProviders } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; 
import { ValidationMessageDirective } from './src/ng2-validation-message.directive'; 
import { ValidationMessageService } from './src/ng2-validation-message.service'; 

export * from './src/ng2-validation-message.directive'; 
export * from './src/ng2-validation-message.service'; 

@NgModule({ 
    imports: [ 
     CommonModule, 
     FormsModule, 
     ReactiveFormsModule 
    ], 
    declarations: [ 
     ValidationMessageDirective 
    ], 
    exports: [ 
     ValidationMessageDirective 
    ], 
}) 
export class Ng2ValidationMessage { 
    static forRoot(): ModuleWithProviders { 
     return { 
      ngModule: Ng2ValidationMessage, 
      providers: [ValidationMessageService] 
     }; 
    } 
} 
+0

モジュールのブートストラップtsを投稿できますか? – wannadream

+0

@wannadreamええ。私の 'index.ts'を投稿しました。見てください。 – crossRT

答えて

0

あなたはこれを試すことができますか?

import { ..., FormControlDirective, FormGroupDirective } from '@angular/forms'; 

@NgModule({ 
    ... 
    providers: [FormControlDirective, FormGroupDirective] 
}) 
+0

番号。それは動作しません。 – crossRT

+0

これはどうですか?私の更新されたコードを見てください。 – wannadream

+0

も同じです。 =( – crossRT

1

入力フォームコントロールでない場合、この問題は、入力用のname属性を提供しなかった私のために、発生します。 角度バージョンの問題とは関係ありません。

関連する問題