共计 1227 个字符,预计需要花费 4 分钟才能阅读完成。
在以前的时候一直以为 angular 的子路由就是下一次跳转的位置,虽然如果你不用 router-outlet导出的话他会显示不出来,但也仅仅这样了,也没有细细研究过,直到遇到了这周的问题,果然错误让人进步。
No provider for
照着老师以前写的弹窗抄了一下,可却报了错
该引入的也已经引入了
当时找了一会,也没找到问题所在,就报着死马当活马医的心态,不是说缺少 provider 吗,我就给他个 provider
这样一弄,显示倒是能显示出来了。
功能却没法使用
不过这一搞,倒是让我感觉基础相当不扎实,顺便学习了一下 provides 的具体用途
服务模块提供了一些工具服务,比如数据访问和消息。理论上,它们应该是完全由服务提供商组成的,不应该有可声明对象。Angular 的 HttpClientModule 就是一个服务模块的好例子。
根模块 AppModule 是唯一的可以导入服务模块的模块。
说的很清楚,不应该有可声明对象,我上面的用法显然是不对的。更详细的内容请看官方文档
问题所在
当时由于马上就要期中考试了,简单的问了问张喜硕组长后就去了,考试的就一直在想这个问题,明明用法和潘老师的一模一样,我的却有这种问题,唯一的不同就是没用 router-outlet,而router-outlet 是给子路由使用的,我感觉自己可能发现了真相,但却不知道为啥,考完之后回来一试。果然就成了。
配置子路由
const routes: Routes = [
{
path: '',
component: GetLoginPrivilegesComponent,
children: [
{
path: 'register',
loadChildren: '../get-login-privileges/register-index/register-index.module#RegisterIndexModule',
},
{
path: 'forgetPassword',
loadChildren: '../get-login-privileges/forget-password/forget-password.module#ForgetPasswordModule',
},
]
},
];
@NgModule({imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class GetLoginPrivilegesRoutingModule {}
界面功能全有
经过尝试,是因为子路由的原因。
对原因的猜测
- 子路由与父路由是否会让组件之间有
- 子路由对应的组件已经成为了父组件的一部分,所以可以自由调用父组件的方法
如果有大神解答相关疑惑,感激不尽。
一点感想
不同的阶段对同样的问题,还是会有不一样的理解的,就像潘老师常说的有的时候找到一个让自己信服的理由就够了,虽然在编程的道路上,自己还是很菜,很多问题还是知其然,但却不知其所以然,但也确实是渐渐的成长了。慢慢来吧。