Typescript angular 5服务中的窗口对象
我有项目在角度,用户的面板在具体。所有页面都是用php编写的,只有面板是用angular编写的。如何在服务中使用Typescript angular 5服务中的窗口对象,typescript,angular5,Typescript,Angular5,我有项目在角度,用户的面板在具体。所有页面都是用php编写的,只有面板是用angular编写的。如何在服务中使用窗口对象 我想使用window.location执行与HTML中href=“/”完全相同的操作,这会将我返回到主站点的角度项目(面板)之外。为什么?当我尝试获取用户时,它返回状态,例如401,404用户无法访问面板,它必须导航到主站点 我用routenavigate或navigateByURl尝试了几个选项,但地址在Angular中总是设置为baseHref,所以我不能出去。我尝试在提
窗口
对象
我想使用window.location
执行与HTML中href=“/”完全相同的操作,这会将我返回到主站点的角度项目(面板)之外。为什么?当我尝试获取用户时,它返回状态,例如401,404用户无法访问面板,它必须导航到主站点
我用routenavigate
或navigateByURl
尝试了几个选项,但地址在Angular中总是设置为baseHref,所以我不能出去。我尝试在提供程序中传递{provide:Window,useValue:Window}
,将Window注入服务中的构造函数,这在本地主机上运行,但在cli中运行ng build
时,它会向mi发送一个错误:
错误中的错误:无法解析中UserService的所有参数
../my-app/src/app/user.service.ts:(?,[object-object],[object]
对象],[对象对象],[对象对象])
有人吗
在AppModule中:
providers: [UserService, DatePipe, {provide: Window, useValue: window }],
在用户服务中:
constructor(private window: Window, private location: Location, private HttpClient: HttpClient, private route: ActivatedRoute, private router: Router){};
和UserService中的函数来导航状态:
if(data == 403) {
this.setError('You must log in', 'danger');
this.window.location.assign("/");
...
}
发生此错误的原因是angular正在尝试将窗口和位置注入到您的服务中,但找不到具有@Injectable
decorator的相应类。@Injectable
装饰器表示Angular DI系统用于创建类的一个或多个实例。另外,窗口
是一个全局可访问的对象
因此,不要使用this.window.location.assign(“/”)代码>您可以使用window.location.assign(“/”)代码>
或其中任何一项:
window.location.href=http://...';代码>
window.location=http://...';代码>
你能在编辑中分享代码吗。我无法显示所有codetrywindow.location.assign(“/”)代码>没有这个。要访问该窗口,您不必使用此选项。我也相信没有必要导入/提供窗口。我重新安装了我的npm软件包(发现类似的问题),然后我删除了“this”和导入/提供,它就可以工作了!非常感谢。如果您删除这个.window&注入,那么您只需禁用窗口的整个DI:因此,它当然会工作,但很难测试。例如,这会挫败DependencyInjection背后的wohloe想法。
ERROR in Error: Can't resolve all parameters for UserService in ../my-
app/src/app/user.service.ts: (?, [object Object], [object Object],
[object Object], [object Object]).