将侦听器添加到NativeScript中的自定义可观察组件



我试图让我的自定义组件在进行选择时通知其用户,但我在接受活动时遇到问题。

HOME组件使用自定义组件FavouriteListComponent

home.component.ts

export class HomeComponent implements AfterViewInit, OnDestroy {
    @ViewChild('favouriteList', { read: ElementRef }) fl:ElementRef;
    private favouriteCourses: FavouriteCoursesComponent;
    ...
    ngAfterViewInit(): void {
        this.favouriteCourses = <FavouriteCoursesComponent> this.fl.nativeElement;
        this.favouriteCourses.on('selected_course', function(course_id) {
            console.log("on");
            this.tabsComponent.gotoNewGame(course_id);
        });
        console.log("ngAfterViewInit");
    }
    ngOnDestroy(): void {
        this.favouriteCourses.off("selected_course");
    }
}

home.component.html

    <GridLayout row="4">
        <ns-favouritecourses #favouriteList></ns-favouritecourses>
    </GridLayout>

favouritecourses.component.ts

@Component({
  selector: 'ns-favouritecourses',
  ...
})
export class FavouriteCoursesComponent extends Observable implements OnInit {
  ...
  playCourse(courseId: number): void {
    console.log("notifying...");
    this.notifyPropertyChange('selected_course', courseId);
  }
}

在日志中,我可以看到通过"通知"发送的事件,但是我的听众从未收到过,尽管听众似乎添加了正常,尽管它可能不是。

如何将事件从FavouriteListComponent发送到HomeComponent

您应该只使用事件发射器,然后订阅所需的事件。

html:

  <ns-favouritecourses (selected_course)="changed(this)" #favouriteList></ns-favouritecourses>

ts:

@Output() Change: EventEmitter<any> = new EventEmitter();
  changed(value : any){
    this.Change.emit(value);
  }

最新更新