class 内无法识别导入

Import not being recognized within class

---src
   |___app
       |___add-property
           |___add-property.component.ts (where error is found)
       |___services
           |___add-property.service.ts
   app-routing.ts

(添加文件树以供参考)

import { Property } from '../models/Property';
import { AddPropertyService } from '../services/addProperty.service';
import { Routing } from '../app-routing';

export class AddPropertyComponent implements OnInit {

  private newProperty :Property;
  *** private routing :Routing; *** issue is right here

  constructor(private addPropertyService: AddPropertyService) { }
  this.routing.doSomething();
}

我的目标是在此代码块的底部调用 this.routing.doSomething。我突出显示问题所在的代码部分——错误是

Cannot find name 'Routing'.

我还从文件中导出了路由(我的路由所在的位置)。

import { Routes, RouterModule } from '@angular/router';

const APP_ROUTES: Routes = [
  { path: '', redirectTo: '/properties', pathMatch: 'full' },
];
export const Routing = RouterModule.forRoot(APP_ROUTES);

有谁知道为什么它找不到名字 'Routing',即使我相信我做的一切都是正确的?

******* 我解决了,下面的答案供将来参考 *******

我遵循了 Angular 'Routing' 文档:

1. I created a app-routing.module.ts and deleted my app-routing.ts
2. Export AppRoutingModule within app-routing.module.ts
3. Import AppRoutingModule into component that was in need of routing (add-
   property.component.ts in my question)
4. Also Import Router module from '@angular/router'
5. Inside component constructor --> add private router: Router
6. this.router.navigate() is now available for use

你有:

import { Routing } from '../app-routing';

应该是:

import { Routing } from '../../../app-routing';

更新

看来路径是在正确的地方(见评论)。

好吧,另一件事可能是您将 Routing 用作 Type。 如果你想将它用作 Type 它应该是 ModuleWithProviders.

类型

试试这个:

private routing = Routing;

这也应该有效:

private routing: ModuleWithProviders = Routing;

文档:

如果您想使用 doSomething() 功能,您需要将导出更改为其他内容,例如:

export const ROUTING = { routing: RouterModule.forRoot(APP_ROUTES), doSomething: () => { // just do something } }

更好的做法是使用 classinterface 来保存这些值,你想要所有类型,如果你不遵循这个原则,这就是 typescript 的代价,你将在任何地方以 any 声明结束。