2

在以前的时候一直以为angular的子路由就是下一次跳转的位置,虽然如果你不用 router-outlet导出的话他会显示不出来,但也仅仅这样了,也没有细细研究过,直到遇到了这周的问题,果然错误让人进步。

No provider for

照着老师以前写的弹窗抄了一下,可却报了错

clipboard.png
该引入的也已经引入了

clipboard.png
当时找了一会,也没找到问题所在,就报着死马当活马医的心态,不是说缺少provider吗,我就给他个provider

clipboard.png

这样一弄,显示倒是能显示出来了。

clipboard.png

功能却没法使用

clipboard.png

不过这一搞,倒是让我感觉基础相当不扎实,顺便学习了一下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 {
}

界面功能全有
clipboard.png

经过尝试,是因为子路由的原因。

对原因的猜测

  1. 子路由与父路由是否会让组件之间有继承关系。
  2. 子路由对应的组件已经成为了父组件的一部分,所以可以自由调用父组件的方法

如果有大神解答相关疑惑,感激不尽。

一点感想

不同的阶段对同样的问题,还是会有不一样的理解的,就像潘老师常说的有的时候找到一个让自己信服的理由就够了,虽然在编程的道路上,自己还是很菜,很多问题还是知其然,但却不知其所以然,但也确实是渐渐的成长了。慢慢来吧。


笙歌会停
1k 声望45 粉丝

代码成就万世基积沙镇海 梦想永在凌云意意气风发