Angular 2 и DOM

379
15 марта 2017, 19:04

Доброго времени суток!

В приложении на Angular 2 возникла проблема доступа к элементу DOM в шаблоне и вызова его метода. В шаблоне использованы компоненты PrimeNG, необходимо из метода AppComponent вызвать метод show элемента OverlayPanel. Код компонента.

export class AppComponent implements OnInit {
@ViewChild('gngOp') op; 
............
onGNGKey(event){
 let ch : number;
 if (event.which == null) { // IE
   ch = event.keyCode; 
  }
 else{
 if (event.which != 0 && event.charCode != 0) { // все кроме IE
  ch = event.which;
 } 
 }
 if (ch === 13) { // окончание ввода
 if (typeof this.GNG_kod === "number" ){        // ввели лексему или часть код   а
 this.getGNGfromKod();   }
  else{
    this.getGNGfromName(this.GNG_kod);   
     }  
    } 
  }

Фрагмент шаблона компонента:

 <input type="text" pInputText size="6" [(ngModel)]="GNG_kod"   (keypress)="onGNGKey($event)"/>
 <input type="text" pInputText size="30" [(ngModel)]="GNG_name" /> 
 <p-overlayPanel #gngOp id="qqq" [showCloseIcon]="true" [dismissable]="false" >
 <p-dataTable [value]="GNGs" scrollable="true" scrollHeight="300px" scrollWidth="500px" selectionMode="single" [(selection)]="gngRow" (onRowSelect)="onGNGRowSelect($event); gngOp.hide();" >
 <p-column field="kod" ></p-column>
 <p-column field="name" ></p-column>
 <p-column field="bh1" ></p-column>
 </p-dataTable>
 </p-overlayPanel>

Что я не так делаю? Как корректно в моей ситуации получить доступ к элементу OverlayPanel и вызвать его метод show() ? Спасибо.

READ ALSO
Автоматический выбор значения в select

Автоматический выбор значения в select

Есть два селекта выбора стран"Откуда" и "куда"

439
Изменение стиля

Изменение стиля

Почему после нажатия пропадает стиль для :hover ? - Как этого избежать ? Желательно объяснить как для "незнайки" ;)

282
Создать через цикл for элементы DOM дерева

Создать через цикл for элементы DOM дерева

В container добавляется 10 элементов с классом wrapper это норм, но как сделать так чтобы в wrapper добавлялся только один row? Заранее спасибо!

267