angular公共组件的写法
Posted 头名字W
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angular公共组件的写法相关的知识,希望对你有一定的参考价值。
angular的最大的优点便是它的组件化和模块化,本文要讲的是它的组件化:
说到组件就必须说到组件通信,公共组件的通信方式就是父子组件通信.
父子组件通信的三要素: input ,output和emit()
@Input() 定义输入的变量
@Output() 定义输出变量
首先是子组件
popup.html
<div class="popup-wrapper">
<div class="title">
<p>Bank Name: bankName</p>
<p>Account Id: id</p>
<button (click)="show()">显示</button>
<button (click)="hide()">隐藏</button>
</div>
<div class="content" *ngIf="flag">
<button (click)="toggle()">Toggle</button>
<div [hidden]="!visible">
<p>提示信息</p>
</div>
</div>
</div>
popup.component.ts
import Component, OnInit, Input, Output, EventEmitter from '@angular/core';
@Component(
selector: 'app-popup',
templateUrl: './popup.component.html',
styleUrls: ['./popup.component.scss']
)
export class PopupComponent implements OnInit
@Input() bankName: string;
@Input('account-id') id: string; // 可选的仅供模板中使用的名字,默认就是绑定属性的名字
@Output() showPopoup: EventEmitter<any> = new EventEmitter()
@Output() hidePopoup: EventEmitter<any> = new EventEmitter()
constructor()
public flag:boolean = false;
visible: boolean = true;
show()
this.flag = true;
this.showPopoup.emit(true);
hide()
this.flag = false;
this.hidePopoup.emit(false);
toggle()
this.visible = !this.visible;
ngOnInit()
如果定义的公共组件在多个文件中被引入,那么需要在单独定义一个**.module.ts文件,然后在父组件所在的模块中引入,否则多次引入组件会报错.
common-component.module.ts
- 如果定义的组件只使用一次,那么只需要在父组件的**.module.ts中申明就行了.
import NgModule from '@angular/core';
import CommonModule from '@angular/common';
import PopupComponent from "./popup/popup.component";
@NgModule(
// 导入公共模块
imports: [
CommonModule
],
// 申明组件
declarations: [
PopupComponent
],
// 到出公共组件
exports: [
PopupComponent
]
)
export class CommonComponent
在父组件引入子组建前,先要在父组件的module文件中引入
import BrowserModule from '@angular/platform-browser';
import NgModule from '@angular/core';
import AppRoutingModule from './app-routing.module';
import AppComponent from './app.component';
import FormComponent from './form/form.component';
import ReactiveFormsModule from '@angular/forms';
import CommonComponent from "./component/comon-component.module";
@NgModule(
declarations: [
AppComponent,
FormComponent
],
imports: [
BrowserModule,
AppRoutingModule,
ReactiveFormsModule,
CommonComponent
],
providers: [],
bootstrap: [AppComponent]
)
export class AppModule
父组件
form.html
<app-popup bankName="popup" account-id="1" (showPopoup)="show($event)"
(hidePopoup)="hide($event)">
<p style="color: tan">我是当前插入的内容</p>
</app-popup>
form.component.ts
import Component, OnInit from '@angular/core';
import FormArray, FormBuilder, FormControl, FormGroup from '@angular/forms';
@Component(
selector: 'app-form',
templateUrl: './form.component.html',
styleUrls: ['./form.component.css']
)
export class FormComponent implements OnInit
constructor()
show(value)
console.log(value)
hide(value)
console.log(value);
ngOnInit()
以上是关于angular公共组件的写法的主要内容,如果未能解决你的问题,请参考以下文章