ChatGPT解决这个技术问题 Extra ChatGPT

使用 CLI 删除组件的最佳方法是什么

我尝试使用“ng destroy component foo”,它告诉我“Angular-CLI不支持destroy命令”

我们如何使用 Angular CLI 正确删除组件?

CLI 尚不支持它,但是如果您确保在创建组件之前 git 提交了较旧的更改,您可以删除新文件,并对更改的文件执行 git checkout(或仅 git checkout src)。
这是一个聪明的黑客。它确实有效。Angular 团队迟早会解决这个问题。我认为他们目前正忙于其他问题。但我认为暂时我们必须接受你的解决方案。将此作为答案发布。 @SanjayVerma

L
Liam

destroy 或类似内容可能会出现在 CLI 中,但目前它不是主要关注点。因此,您需要手动执行此操作。

删除组件目录(假设您没有使用 --flat),然后将其从声明它的 NgModule 中删除。

如果您不确定该怎么做,我建议您有一个“干净”的应用程序,这意味着当前没有 git 更改。然后生成一个组件并查看 repo 中的更改,以便您可以从那里回溯删除组件所需的操作。

更新

如果您只是在试验想要生成的内容,可以使用 --dry-run 标志不在磁盘上生成任何文件,只需查看更新的文件列表即可。


Y
Yakov Fain

删除包含此组件的文件夹。在 app.module.ts 中移除该组件的导入语句,并从 @NgModule 的声明部分移除其名称 从 index.ts 中移除该组件的导出语句行。


index.ts 在哪里?谢谢
在最新版本的 CLI 中,它们不会生成它。
我认为还缺少一步...再次运行 ng serve ,不是吗?
索引.ts?不在 5
在 Angular6 中,需要从 app-routing.module.ts 中移除 import 语句
I
Isuru Maldeniya

由于尚不支持使用 Angular CLI

所以这是可能的方法,在此之前请观察使用 CLI 创建组件/服务时会发生什么(例如 ng g c demoComponent)。

它创建一个名为 demoComponent (ng gc demoComponent) 的单独文件夹。它生成 HTML、CSS、ts 和一个专用于 demoComponent 的规范文件。此外,它还在 app.module.ts 文件中添加了依赖项,以将该组件添加到您的项目中。

所以以相反的顺序进行

从 app.module.ts 中删除依赖关系删除该组件文件夹。

删除依赖项时,您必须做两件事。

从 app.module.ts 文件中删除导入行引用。从 app.module.ts 中的 @NgModule 声明数组中移除组件声明。


I
Isuru Maldeniya

目前 Angular CLI 不支持删除组件的选项,您需要手动完成。

从 app.module 中删除每个组件的导入引用删除组件文件夹。您还需要从 app.module.ts 文件中的 @NgModule 声明数组中删除组件声明


b
babidi

使用 Visual Studio Code,删除组件文件夹并在项目资源管理器(左侧)中查看红色的文件,这意味着文件受到影响并产生错误。打开每个文件并删除使用该组件的代码。


A
Aidan Grimshaw

我编写了一个 bash 脚本,它应该自动执行下面由 Yakov Fain 编写的过程。它可以像 ./removeComponent myComponentName 一样调用 这仅在 Angular 6 中测试过

#!/bin/bash
if [ "$#" -ne 1 ]; then
    echo "Input a component to delete"
    exit 1
fi

# finds folder with component name and deletes
find . -type d -name $1 | xargs rm -rf

# removes lines referencing the component from app.module.ts
grep -v $1 app.module.ts > temp
mv temp app.module.ts

componentName=$1
componentName+="Component"

grep -v -i $componentName app.module.ts > temp
mv temp app.module.ts

如果将来角度 cli 发生变化,请为我添加注释以更改此设置
V
Vibhor Dube

Angular CLI 不支持这一点,他们也没有心情在短期内包含它。

这是实际创建问题的链接 - https://github.com/angular/angular-cli/issues/1776

https://i.stack.imgur.com/dGtei.png


T
TheMeanCoder

我不确定这是否是最好的方法,但它对我有用。

首先,我删除了组件文件夹。

然后,我清除了与我要删除的组件相关的导入和声明的 app.module.ts、app.component.ts 和 app.component.html。

同样,我清除了 main.ts。

我刚刚保存并刷新了应用程序,它工作正常。


D
Deva

回答 Angular 2+

移除 app.modules.ts 的组件 from imports and declaration array

第二次检查它的引用是否添加到其他模块中,如果是,则将其删除并

最后从应用程序delete that component Manually,你就完成了。

或者你也可以以相反的顺序进行。


M
Mike Stockdale

来自 app.module.ts:

擦除特定组件的导入行;

从@NgModule 中删除它的声明;

然后删除要删除的组件的文件夹及其包含的文件(.component.ts.component.html.component.css.component.spec.ts)。

完毕。

-

我读到有人说要从 main.ts 中删除它。一开始你不应该从那里导入它,因为它已经导入了 AppModule,而 AppModule 是导入你创建的所有组件的那个。


T
T. Bulford

我需要删除其规范文件错误的 Angular 6 指令。即使删除了有问题的文件,删除了对其的所有引用并重新构建应用程序,TS 仍然报告相同的错误。对我有用的是重新启动 Visual Studio - 这清除了错误和旧不需要的指令的所有痕迹。


S
Savas Karaduman

我现在正在使用 Angular 10。手动删除所有文件和引用后,我重新运行“ng serve”,它起作用了。


c
clemens

首先,删除您必须删除的组件文件夹,然后删除您在“ts”文件中创建的条目。


H
Hidayt Rahman

如果你在 CLI 中寻找一些命令,那么 ans 现在是 NO。但是您可以通过删除组件文件夹和所有参考来手动完成。