在Angular 2中,似乎任何和所有DOM操作都是由组件或指令执行的 . 我已经习惯了Angular 1,但是在某些服务中创建和管理自己的DOM元素是相当普遍的 . 最值得注意的是对话 .
在过去,有可能创建一个Angular 1服务 ConfirmationService
,其函数 Confirm()
返回 Promise<bool>
,向用户显示按下是或否的对话框,这解决了承诺 .
这些对话服务(例如UI Bootstrap Modal或NgDialog)通常通过注入 $document
, $compile
和 $parse
服务并动态创建和注入DOM元素来工作 .
我想要防止必须创建一个必须添加到需要确认的任何组件的 ConfirmationComponent
(部分原因是它也可能是需要确认的另一个服务,而且确认只是一个有用的示例)
无论如何,一些帮助/指针将不胜感激 . 提前致谢 .
4 回答
我跑过this link . 虽然我还没有尝试过,但看起来解决方案是像往常一样创建一个Component,以及一个使用该组件的服务:
诀窍是确保从主@NgModule引用DialogComponent:
NgModule({imports:[...],声明:[DialogComponennt],bootstrap:[AppComponent],providers:[DialogService],entryComponents:[DialogComponent]})
如果您对sweetalert2具有依赖性,则对话服务变得非常简单:
Angular Material有一个对话框,以“角度”类型的方式工作,并支持多个打开的对话框(不确定为什么,但确实如此) .
https://material.angular.io/components/dialog/overview
component.ts
dialog-form.component.ts
dialog-form.component.html