Angular2注入的路由器未定义

2023-12-08

如果我将路由器从 @angular/router 注入到组件中然后使用它,我会收到一条错误消息,指出无法调用未定义的 navigatorByUrl。

这是我使用路由器实例的组件:

import { Component, OnInit } from '@angular/core';
import { UserAccountService } from '../service/user-account.service'
import { Response } from '@angular/http';
import * as jQuery from 'jquery';
import { Router } from '@angular/router';


@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  constructor(private userAccountService: UserAccountService,
              private appRouter: Router) { }

  public loginClicked(): void {
    this.userAccountService.Login(this.Email, this.Password).subscribe(this.loginCallback);
  }

  private loginCallback(data: any) {
    if(data.success) {
      localStorage.setItem('access_token', data.token);
      this.appRouter.navigateByUrl('/dashboard'); //-> error
    } else {
      [...]
    }  
  }
}

路由在应用程序模块内定义:

const appRoutes: Routes = [
  {  path: 'login', component: LoginComponent },
  { path: 'dashboard', component: DashboardComponent }
];

@NgModule({
  declarations: [
    AppComponent,
    LoginComponent,
    DashboardComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    RouterModule.forRoot(appRoutes)
  ],
  providers: [UserAccountService],
  bootstrap: [AppComponent]
})

在index.html 中我定义了我的

我是不是忘记了什么?我不知道如何让它正常工作......


您可以使用箭头功能来确保您仍然可以引用this它是LoginComponent实例:

....subscribe((data) => this.loginCallback(data));

另一种选择是使用绑定方法,例如:

....subscribe(this.loginCallback.bind(this));

或者在构造函数中:

this.loginCallback = this.loginCallback.bind(this);

另一种选择是在您的loginCallback:

private loginCallback = (data: any) => {
  ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular2注入的路由器未定义 的相关文章

随机推荐

  • 检查mysql连接是否有效

    我有一个长时间运行的 php 脚本 它基本上是一个无限循环监听事件 它是一个 xmpp 机器人 我用以下命令启动脚本nohup php bot php 脚本的原始结构就像 mysqli mysqli connect while 1 if e
  • 如何在 C# 中解除套接字绑定?

    我在制作的测试应用程序中重用服务器套接字时遇到一些问题 基本上 我有一个既实现客户端又实现服务器端的程序 我出于测试目的运行该程序的两个实例 一个实例开始托管 另一个实例连接 这是监听代码 private void Listen Click
  • 如何处理 AngularJS 路由找不到资源

    在传统的数据驱动 Web 应用程序中 我们经常尝试根据 URL 中传递的 ID 加载资源 如果资源不存在 我们将返回 404 页面 我们应该如何在 AngularJS 中实现同样的目标 我已经按照 AngularJS 电话目录教程进行操作
  • 设置WKInterfacePicker颜色(文本或轮廓)

    有谁知道如何设置文本颜色或焦点样式轮廓颜色WKInterfacePicker 我没有看到它的界面生成器 我无法在代码中找到任何可以设置它的属性项 这是IB 您无法更改默认选择器的颜色 But you can manipulate the v
  • C 随机数生成(纯 C 代码,无库或函数)

    我需要用 C 语言生成一些随机数来测试和调试系统 该系统是一个定制硬件 SoC 功能有限 因此我只能使用基本的数学运算 不 我不能在 stdlib 或 math h 中使用随机数生成器 我需要自己写 那么有某种算法可以生成随机数吗 我知道一
  • 通过使用 htaccess 替换空格

    你好 我的 htaccess 中有这段代码
  • 通过正则表达式查找句子中的数字

    我需要一个正则表达式来查找句子中的所有数字 例如 我有3根香蕉和37个气球 我会得到 3 37 时间是20 00 我有7辆坦克 我会得到 20 00 7 将字符串拆分为 0 9 JAVA String numbers yourString
  • 如何同时编辑 ASP.NET ListView 控件中的所有行?

    我想知道如何立即将所有 ListView 行置于编辑模式 我并不是在寻找一次编辑每一行的传统行为 答案可以是 C 或 VB NET 另外 如果可能的话 请提供在编辑所有行后保存每行更改的任何示例代码 可能最简单的方法是仅使用 ListVie
  • Smartgwt selectitem键值问题

    我有一个SelectItem我通过一个填充Map具有此组合的列表网格字段内 所以很好 但是当我选择组合框中的任何项目而不是获取地图的描述或值时 会将键放入列表网格字段中 我怎样才能让我设置值而不是键 现在我尝试使用 AddChangeHan
  • 当 python 访问具有 None 值的二维列表时发出警告

    我想创建一个n npython 中的列表 其中大部分元素都用 None 初始化 然后我将在 for 循环中设置一些元素 但在该行中我将对角线元素设置为0 我得到了一个警告突出显示 j 在 PyCharm 中 说 意外类型 整数 整数 可能的
  • 无法在后台的 while 循环中发布异步任务的进度 - Android

    我想从 doInBackground 更新对话框的下载进度 我正在打印日志并发布进度 他们都没有工作 它最后更新对话框并最后一次打印所有日志值 private class DownloadEReport extends AsyncTask
  • 关键字“current_timestamp”附近的语法不正确 - 但仅限于一个数据库

    我有一个 SQL Server 2008 R2 实例 上面有多个数据库 我正在尝试在其中一个数据库 我们称之为 DB1 上运行表值函数 该函数将日期作为输入并返回相关信息表 我这样运行我的查询 SELECT FROM dbo getAllS
  • R 中的显式公式与符号导数

    我想评估某些函数的高阶导数f in R 我有两种可能性 Either I determine a general expression for f k the k th derivative of f which I can do in m
  • 64 位 Windows 上的注册表重定向

    我运行的是 64 位 Windows 并且我想创建注册表项HKCU Software Classes Wow6432Node CLSID myguid InprocServer32使用 C 我应该告诉它写入哪个注册表项 以便将其重定向到上面
  • 如何在 xslt 1.0 中求平方根

    我想在 xslt 文件中进行一些计算 并且需要在公式中进行一些平方根 有人可以指出是否可能以及如何实现吗 感谢磨坊 一个可以使用sqrt的模板 函数FXSL 一 在 XSLT 1 0 中
  • 使用内连接获取oracle中特定列值计数

    我通过加入两个表获得了一些列和值 Select tbl orderdetails category name tbl orderdetails branch name tbl ordermaster created date tbl ord
  • 有什么好的教程或书籍可以帮助您学习使用 PHP 进行信用卡处理? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一本很好的教程或书籍来解释如何通过您网站上的表单处理客户的信用卡 我读过一些有关使用curl 的内容 但这不是完整的教程 我正在寻找一个课
  • 如何使用gracefulStop关闭所有grpc服务器流?

    我试图停止从服务器端连接到流服务器的所有客户端 其实我正在使用GracefulStop优雅地处理它的方法 我正在等os Interrupt在通道上发出信号以执行 gRPC 的正常停止 但它被卡住了server GracefulStop 当客
  • 如何屏蔽 URL 中的扩展名

    有没有办法使用 PHP 屏蔽我网站上页面的 URL 扩展名 例子 http home 子文件夹代替http home subfolder php 将以下内容放入网站根目录的 htaccess 文件中
  • Angular2注入的路由器未定义

    如果我将路由器从 angular router 注入到组件中然后使用它 我会收到一条错误消息 指出无法调用未定义的 navigatorByUrl 这是我使用路由器实例的组件 import Component OnInit from angu