我认为这是我做错的事情,但我不知道该怎么办。我想在我的Angular Web组件中进行路由,并且可以进行路由工作。但是,如果使用旋转变压器,则路由插座中使用的组件无法正常工作。活动没有触发!
或者至少...如果您从应用程序中的另一条路线导航到该路线,则它们会触发,例如,从myWebsite.com/#/到myWebsite.com/#/myRoute/myParameter可以正常运行,解析器获取数据,所有事件均按预期触发。但是,如果在此路线上按刷新键,或者尝试将URL(myWebsite.com/#/myRoute/myParameter)直接粘贴到组件呈现的新选项卡/浏览器中,则会调用构造函数,但不会触发任何事件! / p>
这仅在添加解析器时发生。如果我删除了解析器并在每个生命周期事件中添加console.log,它们每次都会工作!我可以进行其他配置吗?这是错误吗?
或者是否有一种方法可以从API获取我的数据,从而迫使事件等待,从而绕过了对解析器的需求。在组件尝试呈现表单之前,我需要数据,因为表单是动态的-所有表单问题都来自该API调用。我已经尝试通过订阅在ngOninit和构造函数中调用服务方法,但是在所有事件触发后,它会获取数据,而我只有一个空白表格。
谢谢!
答案 0 :(得分:0)
事实证明这是zone.js中的错误。更改检测无法按预期方式工作。有一个修复程序,但尚未发布。同时,其他人对此npm软件包进行了非正式修复...
元素区域策略
它就像一种魅力!
只需将其插入您的app.module.ts
从'elements-zone-strategy'导入{ElementZoneStrategyFactory};
const strategyFactory = new ElementZoneStrategyFactory(HelloComponent,this.injector); const helloElement = createCustomElement(HelloComponent,{注入器:this.injector,strategyFactory)); customElements.define('my-hello',helloElement);