假设以下简单模板:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'test-component',
template: '<Label text="Test me"></Label>'
})
export class TestComponent implements OnInit {
}
如何添加对这种用法的支持:
<test-component (tap)="onTap($event)"></test-component>
StackLayout
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'test-component',
template: '<StackLayout (tap)="passTap(e)"><Label text="Test me"></Label></StackLayout>'
})
export class TestComponent implements OnInit {
@Output() public tap = new EventEmitter();
pressTap(event: any) {
this.tap.emit(event);
}
}
但这会产生奇怪的结果,有时会发出两次事件,并且在iOS和Android上似乎不一致。感觉也很笨拙。
StackLayout
,或者我希望LayoutBase
:import { registerElement} from "nativescript-angular/element-registry";
registerElement('test-component', () => LayoutBase);
我还尝试使Angular组件扩展LayoutBase
等,然后尝试映射this.on("tap", ...)
,但没有任何反应。
有没有正确的方法来支持这一点?我错过了难以置信的明显东西吗?