当前位置: 首页 > 知识库问答 >
问题:

无法绑定到“routerLink”,因为它不是已知的本机属性[duplicate]

诸嘉澍
2023-03-14

是的,这可能是第一百次有人遇到这个问题,但没有解决办法对我有效。。。

我使用角2.0.0 rc和什么都不会工作,我想我错过了一些东西,但我不知道是什么

这是我的文件,它们都可以正确传输,是的,我尝试使用不推荐的路由,是的,我根据文档做了,两者都不起作用。

app.component.ts

import { Component, OnInit } from '@angular/core';
import {Routes, Router, ROUTER_DIRECTIVES} from '@angular/router';


import {LoginComponent} from './login/login.component';
import {HomeComponent} from './home/home.component';

@Component({
    selector: 'my-app',
    template: `
     <h1>{{title}}</h1>
     <nav>
        <a [routerLink]="['/login']">login</a>
        <a [routerLink]="['/home']">home</a>
     </nav>
     <router-outlet></router-outlet>
  `, directives: [ROUTER_DIRECTIVES]
})
    @Routes([
        { path: '/login', component: LoginComponent},
        { path: '/home', component: HomeComponent},
])
export class AppComponent implements OnInit {

    constructor(private router: Router) { }

    ngOnInit() {
        this.router.navigate(['/home']);
    }

}

主要的ts

import { bootstrap }    from '@angular/platform-browser-dynamic';
import { ROUTER_PROVIDERS } from '@angular/router';


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

bootstrap(AppComponent, [ROUTER_PROVIDERS]);

指数html

<!DOCTYPE html>
<html>
<head>
    <title>Angular 2 QuickStart</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="styles.css">

    <!-- 1. Load libraries -->
    <!-- Polyfill(s) for older browsers -->
    <script src="node_modules/es6-shim/es6-shim.min.js"></script>

    <script src="node_modules/zone.js/dist/zone.js"></script>
    <script src="node_modules/reflect-metadata/Reflect.js"></script>
    <script src="node_modules/systemjs/dist/system.src.js"></script>

    <!-- 2. Configure SystemJS -->
    <script src="systemjs.config.js"></script>
    <script>
      System.import('app').catch(function(err){ console.error(err);  });
    </script>
</head>

<!-- 3. Display the application -->
<body>
    <my-app>Loading...</my-app>
</body>
</html>

其余的文件几乎都是教程中的复制粘贴,所以我不会用更多的代码来垃圾邮件。。。

更新,我将补充说,由于某种原因,npm日志不会将GET请求发送到@角/路由-弃用/...但是它们会将其发送到其他模块。

我想我知道问题是什么,但我不确定是什么原因造成的

正如您所见,chrome资产中没有routes文件夹。因此,它不知道这一点是有道理的——但是项目文件中的节点_模块在那里,它是在systemjs中指定的。配置。js就像任何其他模块一样。。。

共有3个答案

高化
2023-03-14

Angular需要[…] 以指示它是需要解析的绑定。[…] 中的值仅用于将指定的值解析为数组

<a [routerLink]="['/login']">login</a>
<a [routerLink]="['/home']">home</a>

这并不能解释您收到的错误消息,因为错误消息指示绑定到不存在的属性,而我的更正是让Angular实际执行绑定。

唐钊
2023-03-14

从RC开始。0将路由器更改为新的实现,这意味着许多在线可用的示例都是旧路由器的。

如果您使用的是@RouteConfig,则是旧路由器。这就是@angular/router不推荐的

新的路由器使用@Routes,可从@角/路由器获得

否则,导入ROUTER_DIRECTIVESROUTER_PROVIDERS是相同的。

发布之间的其他重要更改包括。

新路由器不支持命名路由。

之前:

import {RouteConfig} from '@angular/router-deprecated';
@RouteConfig([
  {path: '/myroute/:id', component: MyRoute, name: 'MyRoute'}
])

之后:

import {Routes} from '@angular/router';
@Routes([
  { path: '/myroute/:id`, component: MyRoute }
])

routerLink指令也发生了变化,并且不将对象作为第二个参数来指定路径变量,例如id

之前:

<a routerLink="['MyRoute', {id: 1}]">Link</a>

之后:

<a routerLink="['/myroute', 1]">Link</a>

张晨朗
2023-03-14

他们已经弃用了RC2路由器:http://angularjs.blogspot.com.au/2016/06/improvements-coming-for-routing-in.html

我用的是3.0。0-α。7版本。

根据他们的例子,我还制作了一个应用程序。路线。ts文件:

import { provideRouter, RouterConfig } from '@angular/router';
import { FooComponent, BarComponent, BazComponent } from './components/bunchOComponents.ts'

export const routes: RouterConfig = [
  { path: 'foo', component: FooComponent },
  { path: 'bar', component: BarComponent },
  { path: 'baz', component: BazComponent }
];

export const APP_ROUTER_PROVIDERS = [
  provideRouter(routes)
];

然后我在我的main.ts文件中使用了这个:

import { bootstrap } from '@angular/platform-browser-dynamic';
import { AppComponent } from './components/appcomponent.ts';
import { APP_ROUTER_PROVIDERS } from './app.routes';

bootstrap(AppComponent, [
  APP_ROUTER_PROVIDERS
])
.catch(err => console.error(err));

HTH

 类似资料: