当Angular中的绝对导入无法按预期工作时,我遇到了一个问题。进行以下设置
// tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"moduleResolution": "node",
...
"paths": {
"@models/*": [
"src/app/models/*"
]
}
}
}
// tsconfig.app.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": []
},
"exclude": [
"test.ts",
"**/*.spec.ts",
"**/*.e2e.ts"
]
}
目录结构如下:
/src/app/models
/index.ts
/my-model.ts
// index.ts
export * from './my-model';
以下进口可以正常运行
import { MyModel } from '../../models';
import { MyModel } from '@models/index';
但以下无效,而应该
import { MyModel } from '@models';
更新1:,如果我如下更改路径定义:
"@models/*": [
"src/app/models/*",
"src/app/models/"
]
以下导入方法同样适用
import { MyModel } from '@models/';
更新2:刚刚注意到以下设置:
"@models/*": [
"app/models/*"
]
跟随导入仅适用于角度cli ,即使vc代码抱怨找不到组件
import { MyModel } from '@models/';
更新3:有趣的观察。只是查看了另一个项目的路径配置(由cli生成)和定义如下的路径:
"paths": {
"@models": [
"src/app/models"
],
"@models/*": [
"src/app/models/*"
],
}
通过此设置,导入可以按预期的方式进行:
import { MyModel } from '@models';
现在,问题是这是TS还是Angular CLI?