最近我一直在学习Angular和@angular/元素。我对创建可以在任何html中使用的自定义元素感到好奇。我的目标是创建简单的自定义元素,只有1个组件没有提供者,服务(我的第一个自定义元素)
但我有一个错误
main.ts:12 NullInjectorError: R3InjectorError(AppModule)[ComponentFactoryResolver$1 -> ComponentFactoryResolver$1 -> ComponentFactoryResolver$1]: NullInjectorError: No provider for ComponentFactoryResolver$1!
//app.module.ts import { BrowserModule } from "@angular/platform-browser"; import { NgModule, DoBootstrap, Injector } from "@angular/core"; import { createCustomElement } from "@angular/elements"; import { AppComponent } from "./app.component"; import { AngularElementComponent } from './angular-element/angular-element.component'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule], entryComponents: [AngularElementComponent], providers: [] }) export class AppModule implements DoBootstrap { constructor(private injector: Injector) { } ngDoBootstrap(): void { const el = createCustomElement(AngularElementComponent, { injector: this.injector }); customElements.define('angular-element-component', el); } }
//my component import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-angular-element', templateUrl: './angular-element.component.html', styleUrls: ['./angular-element.component.scss'] }) export class AngularElementComponent implements OnInit { constructor() { } ngOnInit(): void { } }
这就是我的观点。对我来说,错误意味着我必须在导入createCustomElement、DoBootstrap和Injector之后定义一些注入依赖项或提供程序。我在谷歌上搜索了这个错误,发现了一些例子,解释了如果我有一些服务,但没有服务提供商,可能会出现错误。此外,我发现了一些类似的视频https://www.youtube.com/watch?v=lAlOryf1-吴:这是关于调试这样的错误。它告诉我们,我有一个名为ComponentFactoryResolver的类,我已经注入了另一个类,但我没有提供程序或@Injectable装饰器。但问题是,除了我的组件类之外,我并没有创建任何类。(由命令ng g c生成)。
更新:
我也尝试了本指南 https://medium.com/@lavanya.kakimallaiah/creating-a-custom-element-in-angular-aa2a794fd041 并犯了同样的错误
我不知道,也许是因为我在做新的有角度的版本。我将尝试搜索更新版本的指南。
更新:
我得出的结论是:如果我将组件添加到模块装饰器内的引导数组中,错误就会消失。但是,在构建js文件并在简单html中使用它之后,我遇到了另一个错误
The selector "app-angular-element" did not match any elements
抱歉,我的英语很差。希望有人能指出错误在哪里。
好了伙计们。我已经修复了它(或只是找到了它的工作方式)。问题是我在项目中有2个组件:AppComponent和AngularElementComponent。仅注册了一个AngularElementComponent。我找到了另一个指南,解释了如何创建简单的一个项目定制组件https://www.youtube.com/watch?v=K41nS8-m6oM
总之,我需要学习如何在一个项目中创建和管理自定义元素。在实际项目中,我打赌有多个组件相互依赖,所以我只需要知道如何处理这些依赖关系和组件的生命周期,以便创建复杂的自定义组件。
因为现在对我来说已经足够了。
本文向大家介绍aurelia 创建具有可绑定属性的自定义元素,包括了aurelia 创建具有可绑定属性的自定义元素的使用技巧和注意事项,需要的朋友参考一下 示例 创建具有可绑定属性的自定义元素非常简单。如果要创建一个接受一个或多个插件可以使用的值的元素,则需要使用@bindable装饰器和语法。 在下面,我们正在创建一个自定义元素,该元素接受一系列水果并显示它们。 示例: my-element.j
本文向大家介绍aurelia 基于命名约定创建自定义元素,包括了aurelia 基于命名约定创建自定义元素的使用技巧和注意事项,需要的朋友参考一下 示例 通过CustomElement在类名中简单地添加后缀,即可基于命名约定在Aurelia中创建一个基本的自定义元素。此后缀将由Aurelia自动删除。类名称的其余部分将被小写并使用连字符分隔,然后可用作元素名称。 示例: my-element.js
使用Ember.Component子类自定义元素,并将tagName属性设置为它。 语法 (Syntax) import Ember from 'ember'; export default Ember.Component.extend ({ tagName: 'tag_name' }); 例子 (Example) 下面给出的示例指定使用tagName属性自定义组件的元素。 创建一个名为p
我试图将onclick事件添加到svg元素中。 custom.svg
这是我的问题。 我有一个像这样的简单表格(示例): null null 并且我正在尝试列的名称,同时单击元素。 我想这可能是一个简单的解决办法但我找不到。 提前致谢
我正在构建一个自定义元素来标记示例(在http://jsbin.com/kiboxuca/1/edit): 这将产生我想要的外观: 部分文本[示例:简介 更多示例-结束示例] 但是,因为它使