我担心我最终会在Angular2中导致冲突的导入,我会很感激一些指导。
在组件1中,我有以下内容:
// Services
import {DataService} from './services/a2.DataService';
//import {DataService} from '../../mocks/a2.mockDataService';
在组件2中,我有以下内容:
public void transfer1(Purse p) {
for (String coin : newPurse) {
newPurse.add(coin);
p.newPurse.clear();
}
}
这对我来说似乎是完全错误的。所以我想我在做什么?错了!
我原本希望在app / main / bootstrap组件中指定一组一致的导入,并由所有组件继承;有点像stdafx.h被包含在任何地方。
指导请...
答案 0 :(得分:0)
所以你所做的是正确的。 Angular2没有IoC容器,例如php中的Laravel,但Angular2 bootstrap很接近!但你可以用这种方式做一些很酷的事情。
因此,如果我们向引导程序组件添加服务,则该服务与我们应用程序的其余部分相同。我的意思是:
exports class myGlobalClass{
var myGlobalVariable = 'Cheese';
}
当我在任何其他模块中调用此类时(只要我引导它),我可以得到myGlobalVariable
的值,这对于像observables这样的东西来说真的很酷。使用observable,当我引导变量时,我可以很容易地对整个应用程序进行状态更改效果。
您仍然必须使用import {myGlobalClass} from './globals'
导入它,但它在整个应用程序中都是相同的类/对象。
但是如果我不希望整个应用程序中的所有内容都改变状态更改呢?我该怎么做才能让它更“本地化”?
exports class myLocalClass{
var myLocalVariable = 'Local Cheese';
}
我会导入import {myLocalClass} from './locals'
的组件文件。这会在每次导入时生成一个单独的类,因此您可以在不同的视图上使用此特定类,而不必担心一个视图更改另一个视图。
如果我希望myLocalClass影响两个不同的视图,那么什么可以使这更具挑战性。 Angular2附带了额外的工具,可以让你在没有太多头痛的情况下做到这一点,但是你可以更清楚地看到Angular2是如何将它分开的。
另外要添加到toskv的评论,这就是导入在ES6中的工作方式。我不完全确定他们是否像使用Node那样移植它,其中每个模块只编译一次并分发,或者每个模块是按照每个调用单独编译的。我会假设后者,但不完全确定,希望其他人可以加入。