Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript angular 5服务中的窗口对象_Typescript_Angular5 - Fatal编程技术网

Typescript angular 5服务中的窗口对象

Typescript angular 5服务中的窗口对象,typescript,angular5,Typescript,Angular5,我有项目在角度,用户的面板在具体。所有页面都是用php编写的,只有面板是用angular编写的。如何在服务中使用窗口对象 我想使用window.location执行与HTML中href=“/”完全相同的操作,这会将我返回到主站点的角度项目(面板)之外。为什么?当我尝试获取用户时,它返回状态,例如401,404用户无法访问面板,它必须导航到主站点 我用routenavigate或navigateByURl尝试了几个选项,但地址在Angular中总是设置为baseHref,所以我不能出去。我尝试在提

我有项目在角度,用户的面板在具体。所有页面都是用php编写的,只有面板是用angular编写的。如何在服务中使用
窗口
对象

我想使用
window.location
执行与HTML中href=“/”完全相同的操作,这会将我返回到主站点的角度项目(面板)之外。为什么?当我尝试获取用户时,它返回状态,例如401,404用户无法访问面板,它必须导航到主站点

我用route
navigate
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://...';

  • 你能在编辑中分享代码吗。我无法显示所有codetry
    window.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]).