angular2中的导航错误

时间:2017-03-24 08:05:26

标签: node.js angular webpack-2 typescript2.1

我在更新后将角度包版本从2.4.10更新到4.0.0我在导航时遇到以下错误。

ERROR Error: Uncaught (in promise): Error: Found the synthetic property @transformPlaceholder. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application.
Error: Found the synthetic property @transformPlaceholder. Please include either "BrowserAnimationsModule" or "NoopAnimationsModule" in your application

我更改了webpack.common.js配置。见下面的代码

 new webpack.ContextReplacementPlugin(
            // The (\\|\/) piece accounts for path separators in *nix and Windows
            /angular(\\|\/)core(\\|\/)@angular/,
            helpers.root('./src'), // location of your src
            {} // a map of your routes
        ),

5 个答案:

答案 0 :(得分:53)

我已经解决了这个问题。我添加了一个新包:@angular/animations

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

我导入了模块:

@NgModule({
    imports: [
        BrowserAnimationsModule
    ]
})

答案 1 :(得分:25)

这是4.0.0-rc.1的变化。

用他们的话来说,“我们已将动画添加到他们自己的包中。这意味着如果您不使用动画,这些额外的代码将不会在您的生产包中结束。这也使您可以更轻松地找到文档和如果你确实需要动画,像Material这样的库会自动导入模块(一旦你通过NPM安装它),或者你可以自己添加到主NgModule。“

  1. npm install @angular/animations --save
  2. 内部AppModule>> import {BrowserAnimationsModule} from '@angular/platform-browser/animations'
  3. 将其添加到导入。

     @NgModule({
         imports: [
           BrowserAnimationsModule
         ]
     })
    

答案 2 :(得分:9)

这取决于您是否要使用Angular动画

如果您不想使用它(即它会减少生产包大小),那么导入NoopAnimationsModule:

import { NoopAnimationsModule } from '@angular/platform-browser/animations';

imports: [
   NoopAnimationsModule 
   // ...
]

答案 3 :(得分:7)

人们可能会遇到问题 从' @ angular / platform-b​​rowser / animations'中导入{BrowserAnimationsModule};

您可以收到以下错误消息: node_modules / @ angular / platform-b​​rowser / bundles / platform-b​​r owser.umd.js / animati ons 404(Not Found)

要解决此问题,如果您使用的是systemjs.config.js,那么您需要使用此行:       ' @ angular / platform-b​​rowser / animations':' npm:@ angular / platform-b​​rowser / bundles / platform-b​​rowser-animations.umd.js',

以下是修复问题的systemjs.config.js的示例内容:

    <div class="body" data-spy="scroll" data-target=".navbar-fixed-top">
      <section id="red" class="bc1">
      </section>
      <section id="blue" class="bc2">
      </section>
      <section id="green" class="bc3">
      </section>
      <section id="blue" class="bc4">
      </section>
    </div>



     <script>

    var $pages = $('section'), tot = $pages.length, c = 0, pagePos = 0, down = 0, listen = true;
    $('.body').on('DOMMouseScroll mousewheel', function(e) {
        e.preventDefault();
        if (!listen)
            return;
        listen = false;
        down = e.originalEvent.detail > 0 || e.originalEvent.wheelDelta < 0;
        c = Math.min(Math.max(0, down ? ++c : --c), tot - 1);
        pagePos = $pages.eq(c).offset().top;

        $(this).stop().animate({
            scrollTop : pagePos
        }, 850, function() {
            listen = true;
        });

    });
</script>

注意:除非您使用primeng,否则不需要对primeng的引用。我碰巧尝试了一下。 (不是推荐)

答案 4 :(得分:-1)

不要忘记在System.config.js文件中添加以下行。如果您要在角度项目中使用动画,则需要在角度回购中包含此行。

 '@angular/animations': 'npm:@angular/animations/bundles/animations.umd.js',
 '@angular/animations/browser': 'npm:@angular/animations/bundles/animations-browser.umd.js',
  @angular/platform-browser/animations': 'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js',