我实际上正在使用Angular 2,但我找到了一个解决方案,但在我看来它只是一种解决方法。它现在还没有完全发挥作用。
我创建了一个可以在任何地方注入的服务,以及一个位于根组件模板的组件。
class DialogService {
output: Subject<DialogEvent>
constructor(){
this.output = new Subject()
}
ask(question = 'Are you sure?', accept = 'Ok', cancel = 'Cancel') {
var input = new Subject()
this.output.next({question, cancel, accept, input})
return input.toPromise()
}
}
class DialogComponent {
private output: Subject<boolean>
texts: DialogEvent = {}
constructor(private dialogService: DialogService) {
this.dialogService.output.subscribe(event => {
this.texts = event
this.output = event.input
this.show()
})
}
cancel() {
this.output.next(false)
this.hide()
}
accept() {
this.output.next(true)
this.hide()
}
}
此设置适用于这一点,它将在服务中询问时打开,并以正确的功能(接受或取消)关闭,但不会创建或触发承诺。
无论如何,如果有更好的方法来完成这项工作,我100%就可以了。