カスタムバリデーターでサービスを使用して、ユーザー名がすでに存在するかどうかを確認しようとしています。カスタムバリデーターのサービスをAngular2に挿入する
import {Component} from 'angular2/core';
import {
Control,
ControlGroup,
FormBuilder
} from "angular2/common";
import {CharacterService} from "./character-service";
@Component({
selector: 'register-character-form',
template: `
<h2 class="ui header">A new adventurer is coming...</h2>
<form (ngSubmit)="register()" [ngFormModel]="characterForm" class="ui form">
<div class="field">
<label>Nom</label>
<input ngControl="name">
</div>
<button type="submit" class="ui button">Enter in the adventure</button>
</form>
`,
providers: [CharacterService]
})
export class RegisterCharacterFormCmp {
characterForm: ControlGroup;
name: Control;
constructor(private _characterService: CharacterService, fb: FormBuilder) {
this.name = fb.control('', this.characterNameValidator);
this.characterForm = fb.group({
name: this.name
});
}
register(): void {
//TODO: To implement
}
// Not works, this binds the control
characterNameValidator(control: Control) {
return this._characterService.isCharacterNameAlreadyExists(control.value) ? {nameCharacterAlreadyExistsError: true} : null;
}
}
これは機能しません。 characterNameValidatorでは、 'this'はコントロールを参照し、myクラスは参照しません。サービスは未定義です。バリデーターで私のサービスを使用するにはどうすればいいですか?
さらにグローバルに、カスタムバリデーターで引数を渡すにはどうすればよいですか?
完璧に動作します。ありがとうございます。 – Kelem
矢印機能を使用して、これを正しいオブジェクトに向けることもできます。 – toskv
@SnareChops - これは 'bind'のどこにリンクされていますか?私は何か役に立つものを見つけることができません。 –