首页 > 解决方案 > Angular:将服务/组件移动到另一个文件夹(在文件夹结构中,而不是在代码中)

问题描述

SHORT:重命名服务或组件没有问题,但您也可以将其移动到另一个文件夹吗?

LONG:这是我使用以下ng new service data命令在错误目录中生成的服务:

我要移动的服务

当我将它从src文件夹移动到文件夹中时,系统会_service询问我是否要更新导入。当然,我按yes,但是在启动应用程序时出现此错误:

Module build failed (from ./node_modules/@ngtools/webpack/src/index.js): Error: ENOENT: no such file or directory ...\data.service.ts

所以我检查了index.js文件,如果我可以手动更新 data.service.ts 的路径,但这是不可能的,因为这就是index.js文件中的全部内容:

"use strict";

function __export(m) {
    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./angular_compiler_plugin"));
__export(require("./interfaces"));
var loader_1 = require("./loader");
exports.default = loader_1.ngcLoader;
exports.NgToolsLoader = __filename;

标签: javascriptangular

解决方案


TL;DR:自动更新导入似乎不适用于嵌套的 Angular 组件文件夹,并且该错误是无用的。检查这些导入是否正确更新(海报示例中 _components 文件夹中的任何内容)。

我刚刚遇到了同样的问题。我正在使用“移动 TS”VSCode 扩展,它似乎没有更新按文件夹分组的组件中的导入。例如,考虑以下文件夹结构:

> 组件 1
> 组件 2
> 表单
      > 名称组件
      > 电子邮件组件
> 服务
api.service.ts

当我将 api.service.ts 从其当前位置移动到 Services 文件夹时,扩展正确地更新了组件 1 和组件 2 中的导入。但是,它未能正确更新名称组件和电子邮件组件中的导入。我猜想原生 VS Code 的“更新导入”选项也有同样的缺陷。因此,我会检查您的 _components 文件夹以确保正确更新了导入。


推荐阅读