无法导航到名称为

时间:2016-02-11 15:02:09

标签: angular angular2-routing

我的RouteConfig定义了以下路径

@RouteConfig ([
    { path:'/main',name:'Home',redirectTo: ['Setup']},
    { path:'/setup',name:'Setup',component:SetupComponent},
    { path:'/configuration',name:'Configuration',component:ConfigurationComponent},
])

在模板中我有

    <ol>
        <li><a [routerLink]="['Setup']">Setup</a></li>
        <li><a [routerLink]="['Configuration']">Configuration</a></li>
        <li><a [routerLink]="['Home']">Home</a></li>                
    </ol>

在组件中,我尝试过的方法

this._Router.navigate(['Home']);

在这两种情况下,(使用routerLink指令和Router.navigate方法)尝试导航到“Home”路由时,我收到以下错误。

Component "AppComponent" has no route named "Home"

而具有与其关联的组件的路由都按预期工作。从Children路由器调用它们时的行为也一样。

如何路由/导航到名为“Home”的路线?

3 个答案:

答案 0 :(得分:3)

您无法为重定向路线指定名称。由于Home重定向到名为Setup的路由,因此我会使用Setup名称。

答案 1 :(得分:0)

你应该使用/之前路由器名称this._Router.navigate(['/ Home']);

请参阅Routing through links in Angular2

上的另一个示例

答案 2 :(得分:0)

在示例代码中,您具有家庭/主要路线对象:

CommandInvokationFailure: Unable to update the SDK. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. 
C:\Program Files (x86)\Android\android-sdk\tempToolsDir\bin\sdkmanager.bat --sdk_root=C:\Program Files (x86)\Android\android-sdk tools platform-tools "build-tools;28.0.3"

stderr[
Error: Failed to find package Files
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
]
stdout[

]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.Command.RunWithStdin (System.Diagnostics.ProcessStartInfo psi, System.String errorMsg, System.Collections.Generic.IEnumerable`1[T] input) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.AndroidSDKTools.RunAndroidSdkTool (System.String toolName, System.String arguments, System.Boolean updateCommand, System.String errorMsg, System.String toolsDir) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.AndroidSDKTools.UpdateSDK (UnityEditor.Android.AndroidJavaTools javaTools) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKComponentDetector.Update (UnityEditor.Android.AndroidSDKTools sdkTools, UnityEditor.Android.AndroidJavaTools javaTools, System.Version minVersion, UnityEditor.Android.PostProcessor.ProgressHandler onProgress) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.EnsureSDKComponentVersion (UnityEditor.Android.AndroidJavaTools javaTools, System.Version minVersion, UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK+SDKComponentDetector detector) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.Tasks.CheckAndroidSDK.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <e1c3953b4cf040ddb1400046b1c34897>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

您需要路由到路径-{ path:'/main', name:'Home', redirectTo: ['Setup'] }, ,而不是名称-/main。因此,您的html应该是:

Home

您的TypeScript应该是

<ol>
   <li><a [routerLink]="'/setup'">Setup</a></li>
   <li><a [routerLink]="'/configuration'">Configuration</a></li>
   <li><a [routerLink]="'/main'">Home</a></li>
</ol>

此外,我在route interface中没有看到this._Router.navigate(['/main']); 属性,因此请考虑将其删除。

希望有帮助。