ウェブサイト検索

バリデーション - Angular 4 バリデーターによってエラー "errors : {__zone_symbol__state: null, __zone_symbol__value: Array(0)}" を設定


Mobile mobileNumberValidatorは正常に動作しますが、他の二つのバリデーターはエラー時にnullのプロミスを返します。ここで自分が犯したミスが特定できません。助けてください。その二つのバリデーターはFormBuilderオブジェクトに次のようにエラーを設定します

エラー : {__zone_symbol__state: null, __zone_symbol__value: Array(0)}

フォームビルダーグループ内

 this.empInfoForm = this.fb.group({
      'Mobile': [null, [Validators.required], [this.mobileNumberValidator.bind(this)]],
      'Private': [null,  [this.privateNumberValidator.bind(this)]],
      'Work': [null, [this.workNumberValidator.bind(this)]],  
    });

バリデータメソッド

  mobileNumberValidator(control: AbstractControl) {

        return new Promise(resolve => {
          setTimeout(() => {
            if (!this.isMobileNumberValid) {
              resolve({
                'phoneNumber': true

              })
            console.log(this.empInfoForm)
            } else {
              resolve(null);
            }
          }, 10);
        })
      }
        workNumberValidator(control: AbstractControl) {

        return new Promise(resolve => {
          setTimeout(() => {
            if (!this.isWorkNumberValid) {
              resolve({
                'phoneNumber': true

              })
               console.log(this.empInfoForm)
            } else {
              resolve(null);
            }
          }, 10);
        })
      }
        privateNumberValidator(control: AbstractControl) {

        return new Promise(resolve => {
          setTimeout(() => {
            if (!this.isPrivateNumberValid) {
              resolve({
                'phoneNumber': true

              })

                  console.log(this.empInfoForm)
            } else {
              resolve(null);
            }
          }, 10);
        })
      }

回答 #1

ここで自分がしたミスを見つけました。カスタムバリデータのバインディングは、ここでは3番目のパラメータであるべきです。

this.empInfoForm = this.fb.group({
      'Mobile': [null, [Validators.required], [this.mobileNumberValidator.bind(this)]],
      'Private': [null,null,[this.privateNumberValidator.bind(this)]],
      'Work': [null,null,[this.workNumberValidator.bind(this)]],  
    });

回答 #2

In IONIC

if you facing issue in IONIC

error :- __zone_symbol__state: null, __zone_symbol__value: Array(0)


======================== Sol




// use platform ready function, its must

 this.platform.ready().then(() => {

        // use promise like syntax not like this.appVersion.getVersionNumber()
       
     this.appVersion.getVersionNumber().then((data) => {
            
            })

})