angular2一致进口

时间:2016-03-04 16:00:04

标签: typescript angular

我担心我最终会在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被包含在任何地方。

指导请...

1 个答案:

答案 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那样移植它,其中每个模块只编译一次并分发,或者每个模块是按照每个调用单独编译的。我会假设后者,但不完全确定,希望其他人可以加入。