angular-element-自定义标签
一. 什么是angular自定义标签?
angular自定义标签,就是将angular里面的某些component转换成一个自定义标签,这个标签可以在任何平台使用,而不依赖angular,真的做到了跨平台使用。
二. 如何使用angular自定义标签?
有一些可以借鉴的网站可以先看下:
angular 官方地址:https://angular.io/guide/elements
链接1. https://tso1158687.github.io/blog/2020/04/06/introduce-to-angular-elements/
链接2. https://fullstackladder.dev/blog/2018/05/08/angular-advanced-angular-elements-intro/
步骤:
1. 在angular项目中添加angular elements
ng add @angular/elements
2. 修改app.module.ts
@NgModule({
declarations: [...],
imports: [...],
providers: [...],
bootstrap: [AppComponent]
})
移除掉 bootstrap: [AppComponent]
并修改为:
export class AppModule { constructor(injector: Injector) { const RevisedSearchElement: any = createCustomElement(RevisedSearchComponent, { injector }); customElements.define('revised-search', RevisedSearchElement); } ngDoBootstrap() {} }
3. 修改index.html
为
这样的话,在anguar 的index页面就引用了自定义标签
4. 如果想在非当前的angular项目中使用这个自定义标签:
a. 修改package.json ,去掉打包时候的hash
"build": "ng build --prod --output-hashing=none",
b. 如果是Mac或者是Linux, package.json中添加,这样可以将几个js文件打包成一个js文件
cat dist/hello-angular-elements/{runtime-es2015,polyfills-es2015,main-es2015}.js > all.js
c. 如果是windows,则在dist文件夹目录下使用git bash 命令:
cat {runtime,polyfills,main}.js > revised-search.js
5. 这样在新项目中就可以直接引入revised-search.js, 并且使用
"utf-8">
<base href="">
element test
"stylesheet" type="text/css" href="styles.css"/>
class="revisedSearch">
注意事项:
1. 一定要在app.module.ts中引入translate.service
export class AppModule { constructor( injector: Injector, private translateService: TranslateService ) { translateService.setDefaultLang('en'); const RevisedSearchElement: any = createCustomElement(RevisedSearchComponent, { injector }); customElements.define('revised-search', RevisedSearchElement); } ngDoBootstrap() {} }