0

我正在使用 systemjs.config、angular 4 和 ng2-toastr 版本 4.0.1 运行应用程序时出现错误“无法读取未定义的属性 'forRoot'”似乎没有从 ng2-bootstrap 加载 ToastModule 或任何类

这是 systemjs.config.js 文件

(function (global) {
    System.config({
        paths: {
            // paths serve as alias
            'npm:': 'node_modules/'

        },
        // map tells the System loader where to look for things
        map: {
            // our app is within the app folder
            app: 'app',

            // angular bundles
            '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
            '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
            '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
            '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
            '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
            //'@angular/platform-browser/animations': 'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.min.js',
            '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
            '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
            '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
            'ng2-toastr': 'npm:ng2-toastr/bundles/ng2-toastr.min.js',
            'ng2-validation': 'npm:ng2-validation/bundles/ng2-validation.umd.js',
            'libphonenumber-js': 'npm:libphonenumber-js/bundle/libphonenumber-js.min.js',

            // other libraries
            'rxjs': 'npm:rxjs',
            'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js'
        },
        // packages tells the System loader how to load when no filename and/or no extension
        packages: {
            app: {
                main: './main.js',
                defaultExtension: 'js'
            },
            rxjs: {
                defaultExtension: 'js'
            },
            'ng2-toastr': {
                defaultExtension: 'js'
            },
                'ng2-validation': {
                    defaultExtension: 'js'
                }
        }
    });
})(this);

这是我加载 toastr 的核心模块

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { CustomFormsModule } from 'ng2-validation'
import { ToastModule } from 'ng2-toastr';

@NgModule({
imports: [BrowserModule, CustomFormsModule, ToastModule.forRoot()],
providers: [}],
declarations: [],
bootstrap: []
})
export class CoreModule { }
4

2 回答 2

1

我遇到了同样的问题。最后,我找到了解决方案。您可以ng2-toastr在 system.config.js 中定义如下。

map部分中,

    map: {
    app: 'app',
     ....
     'ng2-toastr': 'npm:ng2-toastr'
    }

然后在packages部分中,

'ng2-toastr': { main: './bundles/ng2-toastr.min.js', defaultExtension: 'js'}

在 app.module.ts 中,你必须像这样导入 toastr。

import { ToastModule } from 'ng2-toastr/ng2-toastr';

在 index.html 中,您必须加载 css 和 javascript 文件。

<link href="~/node_modules/ng2-toastr/bundles/ng2-toastr.min.css" rel="stylesheet" /> <script src="~/node_modules/ng2-toastr/bundles/ng2-toastr.min.js"></script>

最后,在 components 中,可以导入 Toaster 组件。

import { ToastsManager, ToastOptions } from 'ng2-toastr/ng2-toastr';

这个对我有用。

谢谢。

于 2018-05-14T09:38:34.050 回答
0

在地图部分尝试 'ng2-toastr': 'npm:ng2-toastr' 而不是 'ng2-toastr': 'npm:ng2-toastr/bundles/ng2-toastr.min.js'

于 2017-06-02T17:18:26.620 回答