我尝试使用“ng destroy component foo”,它告诉我“Angular-CLI不支持destroy命令”
我们如何使用 Angular CLI 正确删除组件?
git checkout src
)。
destroy
或类似内容可能会出现在 CLI 中,但目前它不是主要关注点。因此,您需要手动执行此操作。
删除组件目录(假设您没有使用 --flat
),然后将其从声明它的 NgModule
中删除。
如果您不确定该怎么做,我建议您有一个“干净”的应用程序,这意味着当前没有 git
更改。然后生成一个组件并查看 repo 中的更改,以便您可以从那里回溯删除组件所需的操作。
更新
如果您只是在试验想要生成的内容,可以使用 --dry-run
标志不在磁盘上生成任何文件,只需查看更新的文件列表即可。
删除包含此组件的文件夹。在 app.module.ts 中移除该组件的导入语句,并从 @NgModule 的声明部分移除其名称 从 index.ts 中移除该组件的导出语句行。
由于尚不支持使用 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 声明数组中移除组件声明。
目前 Angular CLI 不支持删除组件的选项,您需要手动完成。
从 app.module 中删除每个组件的导入引用删除组件文件夹。您还需要从 app.module.ts 文件中的 @NgModule 声明数组中删除组件声明
使用 Visual Studio Code,删除组件文件夹并在项目资源管理器(左侧)中查看红色的文件,这意味着文件受到影响并产生错误。打开每个文件并删除使用该组件的代码。
我编写了一个 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
Angular CLI 不支持这一点,他们也没有心情在短期内包含它。
这是实际创建问题的链接 - https://github.com/angular/angular-cli/issues/1776
https://i.stack.imgur.com/dGtei.png
我不确定这是否是最好的方法,但它对我有用。
首先,我删除了组件文件夹。
然后,我清除了与我要删除的组件相关的导入和声明的 app.module.ts、app.component.ts 和 app.component.html。
同样,我清除了 main.ts。
我刚刚保存并刷新了应用程序,它工作正常。
回答 Angular 2+
移除 app.modules.ts 的组件 from imports and declaration array
。
第二次检查它的引用是否添加到其他模块中,如果是,则将其删除并
最后从应用程序delete that component Manually
,你就完成了。
或者你也可以以相反的顺序进行。
来自 app.module.ts:
擦除特定组件的导入行;
从@NgModule 中删除它的声明;
然后删除要删除的组件的文件夹及其包含的文件(.component.ts
、.component.html
、.component.css
和 .component.spec.ts
)。
完毕。
-
我读到有人说要从 main.ts 中删除它。一开始你不应该从那里导入它,因为它已经导入了 AppModule,而 AppModule 是导入你创建的所有组件的那个。
我需要删除其规范文件错误的 Angular 6 指令。即使删除了有问题的文件,删除了对其的所有引用并重新构建应用程序,TS 仍然报告相同的错误。对我有用的是重新启动 Visual Studio - 这清除了错误和旧不需要的指令的所有痕迹。
我现在正在使用 Angular 10。手动删除所有文件和引用后,我重新运行“ng serve”,它起作用了。
首先,删除您必须删除的组件文件夹,然后删除您在“ts”文件中创建的条目。
如果你在 CLI 中寻找一些命令,那么 ans 现在是 NO。但是您可以通过删除组件文件夹和所有参考来手动完成。