2016-07-26 13 views
0

「onShown」の評価中にエラーが発生しましたが、私は別のコンポーネントを呼び出す。この後、このsidenavSidenav投げる例外は:

<div layout="column" style="height:60px;"> 
<md-sidenav-container layout="row" flex> 
<md-content flex layout-padding> 
    <div layout="column" layout-fill layout-align="top right" style="width: 50px; position: absolute; 
top: -8px; 
right: 55px; 
font-size: 18px;"> 
    <button md-raised-button (click)="open('right')" [hidden]="rightOpened" class="md-primary"> 
     Filtros 
    </button> 
    </div> 
    <div flex></div> 
</md-content> 
<md-sidenav name="right" align="right" layout="column" (onShown)="input.focus()"> 
    <md-toolbar class="md-theme-light"> 
    <h1 class="md-toolbar-tools">Sidenav Right</h1> 
    </md-toolbar> 

を使用しています。私は開発者ツールを使用してエラーや警告を表示する方法を学んだので、私はかなり新しいことですが、私は多くの変更を実装する前にそれを思い出していません。私はしませんので...

EXCEPTION: Error during evaluation of "onShown" 

ORIGINAL EXCEPTION: TypeError: Cannot read property 'focus' of undefined 

...

TypeError: Cannot read property 'focus' of undefined 
    at AbstractChangeDetector.ChangeDetector_SidenavBasicUsage_0.handleEventInternal (viewFactory_SidenavBasicUsage:361:24) 
    at AbstractChangeDetector.handleEvent 

問題は、私は非常によく、十分なエラーを理解していないですどこに私のコードに関連して参照してください。私は話をすると、materializecssから信じています。そして今、エラーを無視し続けるかどうか、それはちょうどうまく動作するか、それについて何かをしているのだろうかと思います。(私はむしろそれをやります。私はそれを修正することができますので、それを突くことを開始する)。

+1

'input'変数はどこで宣言しますか? – yurzui

+1

...「入力」とは何を指すのですか? –

+0

私は、以下の答えで説明されているように、それは例であり、必要なものを適切に定義することを期待していました。私はそれを完全に理解することができなかった、私はそれをよく見ることができなかった。もう一度助けてくれてありがとうございますが、私はこの事を見て時間を過ごしています。 –

答えて

1

コメントで述べたように、あなたのHTMLのスニペットがあります:

<md-sidenav name="right" align="right" layout="column" (onShown)="input.focus()"> 

問題が(onShown)="input.focus()"です。このコードは、ある種の例から来ている可能性があります。典型的には、このタイプのフォーカスオンショーの目的は、シデナブが見えるようになったときに、シデナブ内部の要素に焦点を当てることです。これは、キーボードユーザーの使いやすさとアクセシビリティ上の理由から視覚障害者が現れたばかりのsidenavを知らない場合もあります。

ただし、inputという名前の変数がない可能性があります。あなたがinputという名前の変数を持つことを意図していて、それに焦点を当てると予想された場合、実行された可能性のあるいくつかの異なる方法があり、あなたがしようとしていることを伝える十分なコードがありません。一般的な例は、#inputテンプレート(例えばinput.focus())内の他の場所を参照することができる入力名前テンプレート参照変数を宣言している

<md-sidenav name="right" align="right" layout="column" (onShown)="input.focus()"> 
    <input #input type="text" class="search"/> 
</md-sidenav> 

...等注見えるかもしれません。

+0

あなたは完全に正しいです、私はそのような変数を持っていませんでした。私はそれを必要としませんし、私が(onShown)= "input.focus()"を取り除いたときにエラーがなくなり、コードの残りの部分はうまく動作し続けますので、コードが何をしているのかわからないという問題でした。時間を取るために、それは私に大きな助けになります –

関連する問題