我正在使用Angular 2和Typescript。我正在尝试创建一个类集合,每个类都在自己的文件中定义,并且希望能够使用单个(或可能)更多的行来导入它们。
类似的东西:
// lib/foo.ts
export class Foo {}
// lib/bar.ts
export class Bar {}
// lib/index.d.ts
export * from './foo';
export * from './bar';
// app.component.ts
import * as lib from './lib';
...
let foo = new lib.Foo();
let bar = new lib.Bar();
我通过互联网搜索了一段时间,并在我的代码中尝试了很多可能的方法,但它们似乎都没有用。例如,在这个Stackoverflow answer中,它似乎与我的语法相同(上面的代码)。
那么也许这是一个特定角度的问题?
这是我收到的完整错误消息,当使用" ng serve" (在角度cli上):
ERROR in ./src/app/api-module/services/factory.service.ts
Module not found: Error: Can't resolve '../sketch-objects' in 'D:\[...]\PhpStorm\vector-sketch\src\app\api-module\services'
@ ./src/app/api-module/services/factory.service.ts 8:0-51
虽然有以下作品的导入:
import {Scene} from '../sketch-objects/scene';
仅仅是为了理解:我正在编写一个处理threeJS的应用程序,并希望创建某种工厂,根据给定的特定字符串构建threeJS对象(或更确切地说,围绕threeJS对象的包装器)。例如我有一个功能
// factory.service.ts
import * as lib from './lib'
...
create(objectType: string): any {
let threeObject = lib[objectType]();
return threeObject;
}
我感谢任何帮助,谢谢。
bertiooo
答案 0 :(得分:1)
您正在从两个地方导入单个服务,这会创建两个实例
请参阅此行
import {Scene} from '../sketch-objects/scene';
从lib文件中第二次导入
import * as lib from './lib'
因此,当使用Sketch服务时,angular将不知道要选择哪个服务实例。
要解决此问题,请从同一路径导入服务
注意: https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Wavefront_OBJ