chen
chen
```typescript /** * This array represents the DOM schema. It encodes inheritance, properties, and events. * * ## Overview * * Each line represents one kind of element. The `element_inheritance`...
上面的那个出自[ng源码](https://github.com/angular/angular/blob/master/packages/compiler/src/schema/dom_element_schema_registry.ts#L23-L233), 你可以理解为带`*`的就是事件`^`的意思就是继承,比如` 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align',`继承了[HTMLElement],HTMLElement里面就有好多的事件 如果还理解困难可以新建一个Ng项目,在`node_modules`里面给这个文件下断点,他会在运行时做一个转换
解决方案 ## 坑爹预警,只能用于jit,aot会报错 把组件和模块的类动态生成,虽然能实现,但是........如果你真的必须要使用这个,再考虑这个方案吧,毕竟是非正规方案 动态添加好像我遇到的项目都几乎很少使用,优点就是确实能动态加载哪些组件,当你组件太多没法全搞进去的时候,,跟html拼模板一样,缺点我猜测,应该不能享受到aot了,毕竟你是根据参数来了 ```ts async load(moduleFn: () => Promise) { /**模块的类 */ let module = await moduleFn() /**载入的模块工厂 */ const ngModuleFactory = await this.compiler.compileModuleAsync(module) const ngModuleRef = ngModuleFactory.create(this.injector)...
> 没看到过什么标准用法,不过我觉得你可以自己劫持一下 setTimeout,然后提供一个控制器来提前触发它。 > > 另外,可以看看 fakeAsync/tick 的源码,是不是只要引入点什么库就能让它们用于 e2e 环境。 我的意思不是等太久想提前触发,是想获得初始化的值,但是又因为一个异步,强行卡住需要等待,而等待结束就变成了改变的值.
> 看看这个是不是你想要的: > https://www.protractortest.org/#/async-await > > 看样子它是通过 async 函数的形式,把控制权交还给你了。 谢谢,还是不行 - 初始值假如是1 - 等待x秒后变成2 - 那么现在端对端测试后,他真的就会等待1秒,然后认为是2 - 此处的等待x秒,不是说我认为这个时间太长了,而是为什么在初始化的时候,我找这个元素,这时候还是1,也就是还没改变的状态,他为什么不直接返回1,非要等待x秒返回2,这其中的时间又不是阻塞进程而是定时器 - 又或者,他应该可以类似rxjs那样发射两次值,然后分别比较? - 不知道有没有人真正用过端对端,遇没遇到这个问题,反正是挺郁闷的
> 这么配置了之后,要不要等待是你自己决定的,也就是说如果你不需要等待,那么直接取值就可以了(可能要延迟100毫秒等界面刷新)。如果需要等待时才自己调用 await。你是不是没有修改那个自动等待的选项? 谢谢,确实是那个,改了后就会直接拿初始值了 ` SELENIUM_PROMISE_MANAGER: false,` 关闭自动控制后就要手动了 ```ts it('同步', () => { let e1 = element(by.css('h1')) expect(e1.getText()).toEqual('Welcome to protator-demo!'); }) it('异步', async () => { let e2 = element(by.css('h1'))...
> > 这么配置了之后,要不要等待是你自己决定的,也就是说如果你不需要等待,那么直接取值就可以了(可能要延迟100毫秒等界面刷新)。如果需要等待时才自己调用 await。你是不是没有修改那个自动等待的选项? > > 谢谢,确实是那个,改了后就会直接拿初始值了 > ` SELENIUM_PROMISE_MANAGER: false,` > 关闭自动控制后就要手动了 > > ```ts > it('同步', () => { > let e1 = element(by.css('h1')) > expect(e1.getText()).toEqual('Welcome to protator-demo!');...
有一个包,是可以插入自己写的配置的(当然,也可以修改)[@angular-builders/custom-webpack](https://www.npmjs.com/package/@angular-builders/custom-webpack) 最近我的一个组件也用过这个[cyia-ngx-component](https://github.com/wszgrcy/cyia-ngx-component),可以看一下调用 另外,原来我也想研究webpack的配置,后来发现,很多插件,loader,都是ng自己写的,也就是说哪怕用webpack,核心还是要用它的,触发你看懂哪些插件,loader的源码, 如果仅仅是想对构建做一些处理,这个包应该足够了
请把关键数据保存到localStorge/cookie中,其他地方都是临时跑在内存中,刷新就没了
[官方文档](https://angular.cn/guide/creating-libraries) [我写的自定义组件库](https://github.com/wszgrcy/cyia-ngx-component) 另外注意写这个有些坑爹的地方,比如构建时有那种注释报错,需要把相关报错的注释去掉 引入模块有index.ts,需要把index写完整,否则有些莫名其妙的bug