【Angular4】自作のサロゲートペアのバリデーションを追加

基本的には正規表現のpatternを登録するだけで事足りていたのですが、文字列にサロゲートペア文字列が含まれる時に invalid にする必要がある場面に出くわしました。 そのためには Angular の FormBuilder に自作のバリデーションを追加する必要がありました。

Validators.compose() にメソッドを渡すことで自作のバリデーションを実行することができました。

以下のような形です。

// サロゲートペア文字列が含まれているかチェック
hasSurrogatePair(formCtrl: FormControl) {
  const invalid = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g.test(formCtrl.value);
  if (formCtrl.value === '' || !invalid) {
    return null;
  } else {
    return {'invalidSurrogatePair': true};
  }
}

// 姓名の入力でサロゲートペア文字をチェック
this.userForm = formbuilder.group({
  first_name: ['', Validators.compose([this.hasSurrogatePair])],
  last_name: ['', Validators.compose([this.hasSurrogatePair])]
});

人気記事すべて表示

WEBすべて表示