angular - 为什么更改路线时不保存服务数据?
问题描述
我是 Angular 的新手,我尝试构建一个小应用程序。我有这个服务,它拥有一个变量和一个函数:
数据服务.ts
data = [];
getData() {
this.http.get(url).subscribe((res)=>
this.data.push(res));
};
我也有两条路线:
app.module.ts(服务定义在这里)
import { DataService } from './data.service';
// ...
const appRoutes = [
{ path: 'home', component: HomeComponent },
{ path: 'settings', component: SettingsComponent }
]
@NgModule({
// ..
providers: [DataService],
// ..
})
当我在 homeComponent 中使用 getData 函数时,它工作正常,并且响应被添加到数据数组中。但是 - 问题是 - 一旦我导航到第二条路线,服务中的数据又回到了一个空数组。
我会认为当我导航时该服务没有被“重新启动”。
那么,问题是什么?谢谢你。
解决方案
从不同的方向发现并解决了问题。
我用作<a href="/">
路由的链接,这可能会导致应用程序在每次单击时自行重新启动。<a routerlink="/">
解决问题。
推荐阅读
- reactjs - 如何有条件地渲染使用钩子的组件,我得到错误,即使用钩子的组件不能有条件地渲染
- java - 有没有办法在 JavaFX 中克隆一个选项卡?
- asp.net - 无法使用视图模型 asp.net 核心进行分页
- r - 有没有办法组合 dplyr::filter_at 结果?(一次过滤多个变量)
- python - 将特定列值复制到与特定字符串匹配的另一列
- javascript - 在样式化组件中搜索反应道具时,我可以使用 .includes() 或 .contains() 或 .indexOf() 吗?
- java - DatabaseMetaData.getColumns 具有奇怪的 int 值列大小
- php - 在 Laravel 中这种路由方式是否正确?为相同的端点应用不同的路由
- java - 记录runnable的实例
- sql - 根据 Redshift 中其他表的条目在表中插入值