EDIT : 문제점을 발견했습니다. 그게 뭔지 알아? 크롬 캐싱 문제. Chrome은 캐시를 저장하고 디버거가 열려 있고 명시 적으로 내 페이지를 새로 고치는 동안 캐싱을 해제 할 때까지 어디에도 없습니다. 일단 내가 상쾌하게되면, 나는 잡히는 사건을 얻는 것을 시작했다.Angular2 : 지시문이로드 되나 아무 것도 수행하지 않습니다.
원래 포스트 : onload
, onblur
, 또는 onfocus
: 나는 세 가지 이벤트 중 하나의 컨트롤에 따라 행동하기로했다 정의 각도 지침이있다. 이 컨트롤은 input
컨트롤에 적용되며 비활성화 될 수도 그렇지 않을 수도 있습니다. 나는 onblur
과 onfocus
이 무능력한 통제에서 쓸모 없다는 것을 알고 있지만 결코 나타나지 않는 사건을 듣는 데 전혀 해를 끼치 지 않을 것이라고 생각합니다. 반면에, 활성화 된 컨트롤은 이러한 이벤트를 발생 시키므로 듣고 있어야합니다. 이 지시문은 매우 일반적으로 설계되었으므로 비활성화되고 활성화 된 input
컨트롤을 모두 처리해야합니다.
문제는 아무것도 수행하지 않는 것입니다. 최소한 아무 것도하지 않는 것 같습니다. 지시문이 인스턴스화됩니다. 생성자가 실행되지 않았 음을 확인했으며, 입력 컨트롤에 elementRef
이 가리키는 지 확인했습니다.하지만 그것에 관한 내용입니다. 청취자 중 누구도 일하지 않습니다.
사용법 :
<input myDirective disabled id="someId" name="someName" [ngModel]="myValue" />
지침 : 나는 모든 것을 실행하면 잘로드
import { Directive, HostListener, ElementRef, Input } from "@angular/core";
@Directive({ selector: "[myDirective]" })
export class MyDirective {
constructor(private elementRef: ElementRef) {
}
@HostListener("focus", ["$event.target.value"])
onFocus(value: string) {
console.log("MyDirective: Focus caught.");
}
@HostListener("blur", ["$event.target.value"])
onBlur(value: number) {
console.log("MyDirective: Blur caught.");
}
@HostListener("load", ["$event.target.value"])
onLoad() {
console.log("MyDirective: Load caught.");
}
}
. 누락 된 모듈, 누락 된 구성 요소 등의 문제는 없습니다. 콘솔에 오류가 없습니다. 앞에서 언급했듯이 디버거를 사용하여 코드를 분해하더라도 지시문이 인스턴스화되었는지 확인합니다. 하지만 콘솔 출력도 없습니다. 나는 적어도 onload
이벤트를 기대하고있다. 비활성화 된 input
컨트롤이 해당 컨트롤을 실행하지 않습니까? 그것은 윈도우 이벤트가 아닌 형태의 이벤트
다음은 폼 요소에 대해 처리 할 수있는 이벤트의 목록입니다 때문에
어디에서이 지시문을 제공하고 어디에 사용합니까 (구성 요소 간의 관계)? – echonax
매개 변수가있는 메서드 대신 @HostBinding ('value')을 사용해야합니다. – Fals
@ Fals : 어떻게 도움이 될지 모르겠습니다. 이것은 단순화 된 버전입니다. 실제로 이벤트를 잡을 수 있는지 테스트하는 것일뿐입니다. 나는'load'를'value'와'change'로 바꾸려고 시도했습니다. 그리고 무능력한 Input 컨트롤에서 이것을 시도했습니다.전혀 '불투명'하지 않고 '집중'이 아니라 '가치/변화 /로드'가 아닙니다. 아무것도. 나는 심지어 onInit을 처리하고 컨트롤의 ID를 출력하고 zip을 얻었습니다. "id = undefined". –