从组件方法创建observable,称为事件处理程序

时间:2016-11-21 08:31:53

标签: angular typescript rxjs observable

我有一个组件,看起来像这样:

from django.utils.html import format_html


class Model1Admin(admin.ModelAdmin):

    def image_tag(self, obj):
        return format_html('<img src="{}" />'.format(obj.image.url))

    image_tag.short_description = 'Image'

    list_display = ['image_tag',]

admin.site.register(Model1, Model1Admin)

我想将对@Component({ template: ` ... <child-component (childEvent)="onChildEvent()"></child-component> ` }) export class ParentComponent { onChildEvent() { ... } } 方法的调用转换为可观察的序列。

现在,如果有问题的方法是一些&#34; native&#34; DOM事件,例如点击,模糊等,我会使用onChildFinished,但在这种情况下,这似乎不适用(因为没有涉及本机事件)。

唯一想到的是这样的事情:

Observable.fromEvent

似乎必须有一种更好的方法,因为如果涉及多个处理程序,维护这一点必须非常繁琐。

1 个答案:

答案 0 :(得分:0)

你不只是想要一个EventEmitter吗?

这些是这样创建的:

@Component({
    template: `
      <child-component (finished)="onChildFinished($event)"></child-component>
    `
})
export class ParentComponent {

    onChildFinished(data: number) {
        //...
    }
}

使用Output的子组件。

@Component({
    selector: 'child-component',
    template : `hi`
})
export class ChildComponent {

    @Output()
    public finished: EventEmitter<number> = new EventEmitter<number>();

    private _imFinishing(): void {
        finished.emit(1);
    }
}

也许我不理解你的问题,但这似乎是你想要的。