javascript - 未捕获错误 : Syntax error, 无法识别的表达式:/contact - ANGULAR 2 - 路由时无法实现平滑滚动效果

标签 javascript jquery angular angular-routing

我不明白这个问题。

有人能告诉我这个错误的含义吗?

app.compo.html

<div class="header-w3layouts"> 
  <!-- Navigation -->
  <nav class="navbar navbar-default navbar-fixed-top"> 
    <div class="navbar-header page-scroll">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
        <span class="sr-only">My_Design</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <h1><a class="navbar-brand" href="index.html">My Design</a></h1>
    </div> 
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <ul class="nav navbar-nav navbar-right cl-effect-15">
        <!-- Hidden li included to remove active class from about link when scrolled up past about section -->
        <li class="hidden"><a class="page-scroll" href="#page-top"></a></li>
        <li><a class="page-scroll scroll" [routerLink]="['/']" >Home</a></li>
        <li><a class="page-scroll scroll" [routerLink]="['/contact']">Contact</a></li>
      </ul>
    </div>
  </nav>
</div>      
<main>
  <router-outlet ></router-outlet>
</main>

应用程序路由.ts

import { NgModule }             from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { home }      from './home/home.component';
import { contact }   from './contact/contact.component';
import {AppComponent } from './app.component'
import { ModuleWithProviders } from '@angular/core';

const routes: Routes = [
  { path: '', redirectTo:'/home' ,pathMatch: 'full'},    
  { path:'home', component:home },
  { path: 'contact', component: contact,  pathMatch: 'full' },
];

@NgModule({
  imports: [ RouterModule.forRoot(routes) ],
  exports: [ RouterModule ]
})
export class AppRoutingModule {}

滚动导航.js

//jQuery to collapse the navbar on scroll
$(window).scroll(function() {
  if ($(".navbar").offset().top > 50) {
    $(".navbar-fixed-top").addClass("top-nav-collapse");
  } else {
    $(".navbar-fixed-top").removeClass("top-nav-collapse");
  }
});

//jQuery for page scrolling feature - requires jQuery Easing plugin
$(function() {
  $('a.page-scroll').bind('click', function(event) {
    var $anchor = $(this);
    $('html, body').stop().animate({
      scrollTop: $($anchor.attr('href')).offset().top
    }, 1500, 'easeInOutExpo');
    event.preventDefault();
  });
});

如果我启动调试器,它会突出显示 scrolling-nav.js

中的以下行

scrollTop: $($anchor.attr('href')).offset().top enter image description here

为什么会这样,如何克服?

最佳答案

简单地改变这个:

<li><a class="page-scroll scroll" [routerLink]="['/contact']">Contact</a></li>

进入这个:

<li><a class="page-scroll scroll" [routerLink]="'/contact'">Contact</a></li>

或者甚至可能只是这样:

<li><a class="page-scroll scroll" routerLink="/contact">Contact</a></li>

我敢打赌即使这样也行得通:

<li><a class="page-scroll scroll" routerLink="contact">Contact</a></li>

你的 routerLink如果您没有要传递或计算的复杂参数,指令也接受字符串输入。当您使用 [routerLink]="" 表单时,您需要在 html 属性值(双引号内)内提供 Angular 表达式,因此 'contact'。如果您只设置属性名称(没有绑定(bind),所以只是 routerLink="" 形式),引号内的任何内容都被视为字符串。

关于javascript - 未捕获错误 : Syntax error, 无法识别的表达式:/contact - ANGULAR 2 - 路由时无法实现平滑滚动效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49489846/

相关文章:

javascript - React 列表项的虚拟化位置

angular - 如何在Angular2中拒绝Promise和处理/捕获错误

javascript - 如何获取双数字范围选择器的选定值

javascript getelementsByClassName - 未定义 []

javascript - CSS 转换后的对象位置修复

angular - 如何以编程方式关注 PrimeNG 树中的节点?

html - Angular Material - 如何将 CSS 样式传递给新窗口

javascript - 独立作用域属性何时真正添加到作用域中?

Javascript,有没有办法将数组编写为没有逗号或空格的单个文本字符串?

javascript - 使用 jQuery 每 10 秒自动加载和刷新 Div