当我的应用程序启动时,我希望默认显示route / home。 " useAsDefault:true"我使用的Angular 2版本尚未实现路由定义的属性。
为了解决这个问题我想在app.component.ts中做这个(这是你在网上的很多例子中找到的):
export class AppComponent implements OnInit {
constructor(private _router: Router) {}
ngOnInit() {
this._router.navigate(['/home']);
}
}
但我明白了:
"错误:(29,12)TS2346:提供的参数与呼叫目标的任何签名都不匹配。"
如果我添加Elvis运算符,它可以工作,我不会收到任何错误:
export class AppComponent implements OnInit {
constructor(private _router?: Router) {}
ngOnInit() {
this._router.navigate(['/home']);
}
}
有人可以帮我理解为什么吗? 我的app.component.ts文件:
import {Component, OnInit} from '@angular/core';
import {Router, Routes, ROUTER_DIRECTIVES } from '@angular/router';
import {NavbarComponent} from "./navbar.component";
import {UsersComponent} from "./users.components";
import {PostsComponent} from "./posts.component";
import {HomeComponent} from "./home.component";
@Component({
selector: 'my-app',
templateUrl: 'app/app.component.html',
directives: [NavbarComponent, ROUTER_DIRECTIVES]
})
@Routes([
{path: '/home', component: HomeComponent},
{path: '/users', component: UsersComponent},
{path: '/posts', component: PostsComponent}
])
export class AppComponent implements OnInit {
constructor(private _router?: Router) {}
ngOnInit() {
this._router.navigate(['/home']);
}
}
答案 0 :(得分:1)
如果我添加Elvis运算符,它可以正常运行,我没有收到任何错误
轻微:这不称为猫王操作员。它只是表示可选参数的语法(参考https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3922-parameter-list)
有人可以帮助我理解为什么
错误Supplied parameters do not match any signature of call target
指出某事正在调用构造函数而不提供所有参数。您的问题中没有显示该代码,但您现在知道为什么(当您将参数标记为可选时,出于显而易见的原因,您将该错误静音)