2016-05-06 23 views
0

正しく、私はそれが一般的なhtml5コントロールと同じように動作することを意味しました。 たとえば、私の場合、カスタム送信ボタンを作成しようとしました。このカスタム送信ボタンは、フォームを送信する際に読み込みアイコンを表示します。 だからそのために、私は、コントロールのテンプレートでこれをやった:角度2のカスタムコントロールを正しく実装する方法

<button type="submit" class="btn btn-primary" [ngClass]="{disabled: disabled || submitting}" [disabled]="disabled || submitting"> 
<span *ngIf="submitting"><i class="glyphicon glyphicon-refresh spinning"></i></span> 
{{displayText}} 

とコードを:

import { Component, Input, EventEmitter, OnInit} from 'angular2/core'; 

@Component({ 

    selector: 'submit-button', 
    templateUrl: 'app/shared/submit-button/submit-button.html', 
    styleUrls: ['app/shared/submit-button/submit-button.style.css'] 
}) 

export class SubmitButtonComponent { 

    @Input() submitting: boolean = false; 
    @Input() displayText: string = 'Submit'; 
    @Input() disabled: boolean = false; 
} 

そして、私はこれをやった:

<submit-button [submitting]="submitting" [disabled]="!myForm.form.valid" [displayText]="'Submit'"></submit-button> 

"disabled"属性をコンポーネント自体から内部の内部コントロールにマップする方法を参照してください。 テンプレート?まあ、私はそれが正しいアプローチであるかどうかはわかりません。なぜなら、これはすべての単一のコントロール属性に対して行う必要があるからです。私がここで尋ねるのは、コンポーネントを使用するときに設定した属性をコンポーネント内部のコントロールにシームレスにマップする方法があるかどうかです。

たとえば、ボタンの代わりにテキスト入力があり、それを必要に応じて設定したいとします。必要とされるのはコンポーネント内部の入力ではなくコンポーネントタグ自体の上にあるため、うまく動作しません。

ありがとうございます。

答えて

0

すべてのプロパティに対して@Input()を作成し、内部コントロールに個別にバインドする必要があります。現在、他の方法はありません。 Angular2マテリアルチームは、カスタム入力要素やその他のフォームコントロールを最適に作成する方法を見つけようとしたときも、これを苦労していました。

関連する問題