2017-05-27 12 views
1

角度を使用して基本的な表示/非表示機能を作成しましたが、より洗練されたソリューションが必要なように感じられます。ここで 角度4のクリックで表示/非表示

は私の現在のコードでplnkrです: http://plnkr.co/edit/Q8NfhTL25Y8gOoGMXiP2?p=preview

HTML:

<div class="container"> 
    <label> 
     <input class="pvq-create-checkbox" type="checkbox" name="" value="" (click)='question1()'> 
     <div class="pvq-create-label"> 
     <p>Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh?</p> 
     </div> 
    </label> 
    <label [@hideShow]='state1'>Answer 
     <input type="textbox" name=""> 
    </label> 
    </div> 

ロジック:あなたはこのようなためanimations DSLを使用することにより、オーバーエンジニアリングされている

state1: string = 'inactive'; 
    state2: string = 'inactive'; 

    question1() { 
    this.state1 = (this.state1 === 'inactive' ? 'active' : 'inactive'); 
    } 

    question2() { 
    this.state2 = (this.state2 === 'inactive' ? 'active' : 'inactive'); 
    } 
+0

フォームを使用した別の方法は次のとおりです。http://plnkr.co/edit/pemDTePMm8hY1lJ3Nwfi?p=preview私はアニメーションについてよく分かりませんが、私が恐れているのは問題になるのは、非表示のときでも答えテキストボックスがDOMに残っているため、バリデータがまだ適用されているということです。 –

+0

私はAngularをかなり新しくしています。あなたの目標は、私が達成したいと考えているベストプラクティスですか?あなたが同じ結果を達成しようとしていて最初から始めようとしているのなら、これはあなたがやることでしょうか? – Dachan

+0

私はそれに答えるのに十分なアニメーションを知らない。しかし、確かにあなたはチェックボックスと入力フィールドの値が何であるかを知る必要があるので、フォームとバインディングが必要です。 –

答えて

2

シンプルなアニメーション。不透明度を変更する必要がある場合は、cssとトグルクラスを使用することもできます。

component.ts

class MyComponent { 

    showButtons: any = { 
     q1: false, 
     q2: false 
    } 

    toggleButton(button: string): void { 
     this.showButtons[button] = !this.showButtons[button] 
    } 
} 

component.html

<input type="text" [class.show]="showButtons.q1" placeholder="Answer 1"> 
<button (click)="toggleButton('q1')">Show question 1</button> 

<input type="text" [class.show]="showButtons.q2" placeholder="Answer 2"> 
<button (click)="toggleButton('q2')">Show question 2</button> 

は今、あなたは、これらの入力の各々にshowクラスを切り替えます。アニメーションを使用する代わりにcssに単純なアニメーションを作成できます。

+0

どのような時点で、Angularのアニメーションプロパティを使用し始めますか? 私は、CSSを使っていくつかのアニメーションをやり始めて、Angularを通していくつかのアニメーションをやりたいと思っていません。 – Dachan

+0

@Dachan AngularのアニメーションDSLを使用すると、いつでもあなたはCSSアニメーションを完全に捨てることができます。私は個人的には、いくつかの基本的なアニメーションはAngularの 'アニメーション' DSLでコーディングするには多すぎると考えていますが、CSSではいくつかしかかかりません。 AngularとCSSでいくつかのことをしたくない場合は、完全な 'animations' DSLを使ってください。 – borislemke

関連する問題