问题标签 [angular-ngzone]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 如何找到触发 ngZone 的异步操作(导致更改检测)?
更新堆栈跟踪中的任何更改总是会返回到globalZoneAwareCallback
. 你如何找出是什么触发了改变?
在调试方面,有一个清晰的画面是很好的。
angular - Angular 自定义元素和 Angular 8 材质:MatDialog 和 MatMenu 不起作用
我正在使用角度自定义元素来构建一个应用程序,其中 MatDialog 是自定义元素的一部分。我在主机应用程序中也有一个 MatMenu。问题是,当我在页面加载时打开 mat-dialog,然后打开 mat-menu,mat-dialog 之后就不起作用了,否则如果我先打开菜单,然后再打开 mat-dialog,则菜单不起作用工作了。
您可以在以下位置找到 stackblitz:https ://stackblitz.com/edit/angular-nr58ab-tbu38h
我在 index.html 本身中添加了 MatDialog 应用程序的 main.js 代码。main.js 是在 prod 模式下使用 ngx-build-plus 构建应用程序后生成的,输出哈希为 none 且单包为 true。
MatDialog 应用程序代码如下:
app.module.ts
app.component.ts
和 app.component.html
这是我在 stackblitz 中构建并放入应用程序的 index.html 中的应用程序。
我已经坚持了一段时间,我也尝试在 NgZone.run() 中运行 dialog.open() ,但也没有运气。谢谢。
angular - 即使在 NgZone.run() 中订阅也不起作用
我阅读了有关如何在 Angular 中使用 NgZone 的文章。但是我仍然无法在第一次执行调用中输入订阅。请帮我解决一下这个。提前致谢 :)
}
我要执行的方法:
我有一个从 API 获取数据的服务。数据正在从 API 返回,但订阅在第一次调用中不起作用,我将这两个值都设为未定义。我知道这是因为 Angular 中的异步调用,所以我像这样将我的方法包装在 NgZone 中,但似乎没有任何效果。
我为这两个值做了console.log,但它们在第一次调用中未定义,但在订阅了其他一些方法执行数据之后。我希望这些值在第一次调用本身中得到更新。我是Angular的初学者,请帮忙:)
getData() 方法:
angular8 - Angular 8 本地库导入问题
我创建了一个 Angular 自定义库,我需要在不同工作区的多个项目中使用它。一旦我在本地正确测试它,我将计划将库发布到 NPM。下面是我的图书馆代码:
图书馆公共 API 就像
然后我将我的应用程序(在不同的工作区)链接到我的库。下面是我的 appModule.ts 文件代码
它构建正确但是当我尝试运行应用程序时,它给了我以下错误:
错误:BrowserModule 已加载。如果您需要从延迟加载的模块中访问常用指令,例如 NgIf 和 NgFor,请改为导入 CommonModule。
任何人都可以为此提供帮助吗?我被困在这三天了。
angular - 为什么 Angular 异步管道使用 cdr.markForCheck() 而不是 cdr.detectChanges()?
我有一个一般的 Angular 问题:
为什么 Angularasync
管道使用cdr.markForCheck()
而不是cdr.detectChanges()
?
我看到这两种“风格”有两个主要区别:
markForCheck()
标记要检查到根组件的路径 -要更新的内容markForCheck()
让变化检测发生在当前或下一个周期 -定时
我的想法或问题:
为什么我们需要检查到根的整个路径(在
async
管道中)?为什么不只是当前组件?(detectChanges()
) - 这与要更新的内容有关为什么只标记(用于当前/下一个周期 - 在
markForCheck()
使用 ngZone 时)?为什么不立即检测变化?(detectChanges()
) 这与时间有关如果没有 ngZone 异步触发器/没有异步操作怎么办?那么视图更新不会发生?
如果我们将
async
管道改为使用会发生什么detectChanges()
?
异步管道:
编辑:
当我在文档中多次阅读时,请不要解释每种方法的作用,从async
角度来看,我无法理解。我要知道的重要部分是为什么要更新什么和时间。
angular - 如何将“在 Angular 区域外触发的导航”追踪到原点,这是可能的
我的 Angular 11 应用程序在控制台中触发了这个警告:
Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'? core.js:27937
有没有办法将该警告追溯到我的代码中可能引发它的点(假设原点确实在我的代码中)?
angular - 当服务器发送在多个组件中使用的事件服务时,ngOnInit 不起作用
我创建了一个从后端(节点)获取 SSE(服务器发送事件)的服务。当我在一个组件中使用此服务时,它按预期工作。但是当我第一次尝试在多个组件中使用时,ngoninit 会完美地触发并加载数据。当我导航到一个组件到另一个组件时,ngoninit 没有触发,甚至服务也没有被调用。我希望有人能在这方面提供帮助。
提前致谢。