【发布时间】:2019-06-04 09:01:58
【问题描述】:
我无法使用 Angular 使组件自行删除。
我目前正在学习 Angular,并开始了一个小型问候项目。应用程序应该如何工作:
- 输入您的姓名
- 创建问候您的子组件。
- 子组件包含删除自身的按钮
目前我完成了前两个步骤,一切正常。但我不知道如何让子组件自行删除。来自 React 我知道,有可能以某种方式使用生命周期方法删除“组件”。角度有类似的东西吗?目前我找不到它,但我找到了在组件被销毁之前调用的方法“OnDestroy()”。但是我该如何正确地销毁它呢?
家长:
import { Component, OnInit, ViewChild, Input } from '@angular/core';
@Component({
selector: 'app-greeter-service',
templateUrl: './greeter-service.component.html'
})
export class GreeterServiceComponent implements OnInit {
title = '';
currentUser = '';
isVisible = false;
currentUsers: any[] = [];
@ViewChild('newUser') inputField;
constructor() {}
greetingFunc(newUser : string) {
if(newUser) {
this.currentUsers.push(newUser);
console.log(this.currentUsers);
this.inputField.nativeElement.value='';
}
}
ngOnInit() {
this.title = 'Welcome to the Greeter!';
}
}
孩子:
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-was-greeted',
templateUrl: './was-greeted.component.html',
styleUrls: ['./was-greeted.component.scss']
})
export class WasGreetedComponent implements OnInit {
@Input() user: string;
constructor() { }
deleteMe() {
console.log("here should be the action");
}
ngOnInit() {
}
}
我如何“动态地”将组件添加到应用程序:
<div class="column" *ngFor="let user of currentUsers">
<app-was-greeted [user]="user"></app-was-greeted>
</div>
因此,对于数组“currentUsers”中的每一次“推送”,都会创建一个组件。
【问题讨论】:
-
您是动态添加组件吗?如果是这样,只需在 viewcontainerRef 上调用 clear 就很容易了。见documentation
-
我确实“动态地”添加它。我用我的解决方案编辑我的帖子以动态添加它。
-
您可以轻松地放置一个标志来显示或隐藏组件。例如
这意味着您的选择器组件不会显示在屏幕上。 -
是的,我知道,但我想彻底删除它。
-
这是一个非常广泛的问题。我可以想出十几种方法来处理这个问题。您在寻找什么样的答案?
标签: angular typescript frontend