2016-11-24 4 views
-2

Я пытаюсь связать событие key up и наблюдаемый объект, каждый раз, когда нажимаю клавишу в поле текстового поля, я хочу записать «вы нажали»: + клавиатура в консоли, нет никакой ошибки но также ничего не происходит при нажатии клавиш.angular2 привязывать события к наблюдаемому объекту

/// <reference path="../../../typings/tsd.d.ts" /> 
import { Component } from '@angular/core'; 
import {Observable} from 'rxjs/Rx'; 
@Component({ 
    moduleId:module.id, 
    selector: 'search-samp', 
    template: '<input id="search" type="text" class="form-control" placeholder="search">' 
}) 
export class SearchComponent { 
    constructor(){ 
     var keyups = Observable.fromEvent($("#search"), "keyup").map(e=> {e.target.value}); 
     keyups.subscribe(data => { 
      debugger 
      console.log("you have pressed:"+data)}); 
    } 
} 

Почему его не работает?

Редакция:

var keyups = Observable.fromEvent($("#search"), "keyup").map(function(e){debugger}); 

косяка точка досягаемости отладчика внутри карты function..it не выглядит событие никогда не переплетено правильно .. но почему?

+0

Для записи в keyup вы можете использовать '' –

ответ

5

1) Вы должны ждать, пока ngAfterViewInit не называется (есть элементы без каких-либо шаблона в DOM пока)

2) Вы должны изменить код функции map либо

.map(e => { return e.target.value; }) 

или

.map(e => e.target.value) 

Plunker Example

+0

спасибо за ответ, но map fuction - это то же самое уже в оригинале .. просто посмотрите код, который я разделяю перед редактированием .. I просто изменил его, чтобы объяснить, что функция карты никогда не запускалась. – TyForHelpDude

+1

Смотрите мое обновление. Я добавил plunker – yurzui

+0

да, я сделал это с вами, и он отлично работает, но whatif я хочу запустить его внутри конструктора, я видел его в учебнике, его можно, но если я скопирую этот код внутри него Не могу найти имя 'ngAfterViewInit' ошибка возникает ...? – TyForHelpDude

Смежные вопросы