web-dev-qa-db-ja.com

標準のmaxlengthがあるのに、なぜAngularはng-maxlengthを提供するのですか?

HTML provides バージョン4.01以降の標準のmaxlength属性。 Angularは ng-maxlength ディレクティブを提供します。

違いは、標準のアプローチでは最大値を超えて入力できないのに対し、Angularのアプローチでは検証エラーが生成されるだけです。

なぜ彼らはそのような指令を含めることに決めたのですか?動作に一貫性がないため、maxlengthの動的データバインディングが原因ではありません。 HTML 4.01でも利用できるので、互換性のためではありません。私の唯一の推測は、代替の検証パラダイムを提供するためにあるということですが、それは過剰設計のように聞こえます。

14
Den

最大長の検証を提供するだけでなく、クラスng-invalid-maxlengthも追加します。したがって、制限を超えるものを置くと、ng-invalid-maxlengthクラスがそこに配置され、そのクラスに独自のcssを作成できます。

したがって、検証が失敗した場合にキーを押した後、cssが同時に呼び出され、UIに反映されます。

14
KanhuP2012

以前の回答はangularの以前のバージョンでは正しいかもしれませんが、今日とAngular v1.5.5では、maxlengthng-maxlengthとまったく同じですが、テキストタイプの入力にHTML入力maxlengthプロパティを適用します。

例:

<input type="text" maxlength=5>

maxlengthは、入力に最大5文字を適用し、正しいangular検証クラスを入力に追加します。

一方、ngMaxlengthは検証のみを実施します。参照: https://docs.angularjs.org/api/ng/directive/ngMaxlength

アドバイス:maxlengthを使用してください。

9
fabbb