我在执行ng build --prod时遇到错误但是它与ng服务一起工作正常。请告诉我,如何解决这个问题。
typed-list.ts.TypedList.html(18,39)::无法调用表达式 其类型缺少呼号。输入'EventEmitter'有 没有兼容的呼叫签名。
我正在复制代码片段以供参考..
@Component({
selector: 'typed-list',
template: `
<div class="container" fxFlex>
<div *ngIf="errorMsg.length > 0">
<p class="error">{{this.errorMsg}}</p>
</div>
<form #f="ngForm" name="myForm" (ngSubmit)="onSubmit(f)">
<mat-input-container>
<input matInput type="text" id="value" name="value" placeholder="Enter value to add"
width="auto" [(ngModel)]="value" required>
</mat-input-container>
<div fxFlex class="container" fxLayoutGap="10px">
<div style="overflow-y:auto;height: 250px; width: 400px; border: 1px solid rgba(0, 0, 0, 0.5)">
<mat-selection-list #list (selectionChange)="selectedValues($event)" >
<mat-list-option *ngFor="let val of values" [selected]="val.selected" [value]="val">
{{val}}
</mat-list-option>
</mat-selection-list>
</div>
<div fxFlex fxFlexOrder="1" fxLayoutGap="10px" fxLayout="column">
<button type="button" class="md-accent md-raised" mat-raised-button (click)="addVal(value)"> Add </button>
<button type="button" class="md-primary md-raised" mat-raised-button (click)="removeVal(list)"> Remove </button>
<button type="button" class="md-primary md-raised" mat-raised-button (click)="clearVal()"> Clear </button>
</div>
</div>
</form>
</div>
`,
styles: [`
.border-style{
overflow-y:auto;
height: 250px;
width: 400px;
border: 1px solid rgba(0, 0, 0, 0.5)
}
.error{
color: red;
border: 1px solid rgba(0, 0, 0, 0.5)
}
`]
})
export class TypedList implements OnInit{
values: string[]=[];
value: string;
selectedOptions: string[]=[];
errorMsg : string='';
@Input() initialVals: string[] = [];
@Output() selectedValues: EventEmitter<string[]>= new EventEmitter<string[]>();
ngOnInit(){
if(!!this.initialVals && this.initialVals.length>0)
this.values = this.initialVals;
}
constructor(){
}
commitVal() {
this.selectedValues.emit(this.values);
}
addVal(v: string){
let isFound:boolean = false;
if(this.values && this.values.length >0){
this.values.filter(v1 => {
if(v1 === v){
isFound =true;
}
});
if(isFound)
this.errorMsg = 'Value already exists. Please enter different value';
}
if(!isFound) {this.values.push(v); this.errorMsg='';}
this.selectedValues.emit(this.values);
}
onSubmit(f){
}
removeVal(v){
this.selectedOptions = v.selectedOptions.selected.map(item => item.value);
this.selectedOptions.forEach((v1,index) => {
this.values.filter((key, index) => {
if (key === v1) {
if (index !== -1) {
this.values.splice(index, 1);
}
}
});
});
this.selectedValues.emit(this.values);
}
clearVal(){
this.values=[];
this.value='';
this.selectedOptions=[];
}
}
Thanks,
Venkatesh.
答案 0 :(得分:-1)
您无法将Output()事件发送到相同的html。 output()仅用于在html
中从子标签发送数据到父标签谢谢