2

我在引导程序上有以下错误:

TypeError:无法读取未定义(…)的属性“toString”。

我在Angular2 RC1上并使用ng2-translate 2.1.

此外,在以前的版本中问题仍然存在:Angular2 Beta-17ng2-translate 1.11.

这里是boot.ts

import {provide} from '@angular/core';
import {bootstrap} from '@angular/platform-browser-dynamic'
import {HTTP_PROVIDERS, Http} from '@angular/http';
import {TranslateLoader, TranslateStaticLoader, TranslateService} from 'ng2-translate/ng2-translate';

import {AppComponent} from './app.component'

bootstrap(AppComponent, [
    HTTP_PROVIDERS,
    provide(TranslateLoader, {
        useFactory: (http: Http) => new TranslateStaticLoader(http, 'i18n', '.json'),
        deps: [Http]
    }), TranslateService]);

这里是systemjs.config.js

  var  map = {
    ....
    'ng2-translate': 'docs/default/libs/ng2-translate'
  };
  var packages = {
    ...
    'ng2-translate': { defaultExtension: 'js' }
  };

如果我boot.js在 setter 中有断点ng2_translate

function (ng2_translate_1_1) {
    ng2_translate_1 = ng2_translate_1_1;
},

ng2_translate_1_1“几乎”是空的:

JSON.stringify(ng2_translate_1_1)
=> "{"default":{}}"
4

1 回答 1

1

可能的解决方案:

我在rc1使用angular-cli,遇到了同样的问题并设法完成了翻译工作。这些是可能有助于定位您的问题的代码部分。

系统配置:(注意format: 'cjs'包配置,没有这个选项 TranslateService 是未定义的)

System.config({
    map: {
        /* ... */
        'ng2-translate': 'vendor/ng2-translate',
        /* ... */
    },
    packages: {
        /* ... */
        'ng2-translate': {
            format: 'cjs',
            defaultExtension: 'js',
            main: 'ng2-translate'
        },
        /* ... */
    }
})

到供应商文件夹,我照原样复制'ng2-translate/**/*.js''ng2-translate/ng2-translate.js''ng2-translate/src/*.js'被复制

于 2016-06-07T00:18:50.813 回答