Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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
Angular 11:不推荐订阅:是否改用观察者?_Angular_Typescript_Tslint - Fatal编程技术网

Angular 11:不推荐订阅:是否改用观察者?

Angular 11:不推荐订阅:是否改用观察者?,angular,typescript,tslint,Angular,Typescript,Tslint,我的头发疯了?它为我在整个应用程序中的每一次订阅提供了警告。不管我使用的是旧的还是新的语法,它仍然说subscribe已被弃用。。。如何编写不会被弃用的订阅 直到今天,一切都还不错: something.subscribe((user: User) => { this.userProviderService.setUserId(user.userId); this.proceed = true; }); 我尝试了新语法,但没有做任何更改: so

我的头发疯了?它为我在整个应用程序中的每一次订阅提供了警告。不管我使用的是旧的还是新的语法,它仍然说subscribe已被弃用。。。如何编写不会被弃用的订阅

直到今天,一切都还不错:

something.subscribe((user: User) => {
        this.userProviderService.setUserId(user.userId);
        this.proceed = true;
      });
我尝试了新语法,但没有做任何更改:

something.subscribe({
        next: (user: User) =>  {
          this.userProviderService.setUserId(user.userId);
          this.proceed = true;
        },
        complete: () => {},
        error: () => {}
      });
这正是它所说的:

(方法)可观察。订阅(下一个?:(值:Object)=>void, 错误?:(错误:任意)=>void,完成?:()=>void):订阅(+4 重载)@deprecated-使用观察者而不是完整的 回拨

@不推荐使用-使用观察者而不是错误回调

@不推荐使用-使用观察者而不是完整回调

subscribe已弃用:使用观察者而不是完整的 回调(弃用)tslint(1)

那么我现在如何订阅东西呢?

要回答您的问题“那么我现在如何订阅东西呢”: 就是这样。它很容易使用,与以前做的非常相似,只是做了一个小小的更改,现在它实际上接受了一个对象(观察者),有3个键:next,error,complete

我们两天前在工作中进行了同样的讨论,尽管你可以/应该使用观察者,但这种批评似乎是虚惊一场。(我们认为我们必须更改约900个订阅):

这是在rxjs github页面上创建的关于此问题的问题:

开发人员说这是由于一个typescript错误:

此错误已在3天前修复,但我不确定它是否已在最新版本中:

我只是在VS代码扩展选项卡上查找了TSLint(v1.3.3)。它说:

❗重要提示:TSLint已被弃用,取而代之的是ESLint

当我禁用TSLint并安装ESLint时,所有与订阅相关的警告都消失了


干杯

尝试将一个虚拟控制台置于错误状态并完成回调—这些键的空回调似乎是一个问题。很多人都面临过这个问题。这个问题能回答你的问题吗@mbojko您刚才链接的内容与另一个问题有关。请看:D,据我所知:这是一种vscode/tslint问题,可能很快就会得到解决?这正是这个答案的关键所在!当涉及到VS代码中的错误时,这解决了所有问题。删除TSLint扩展并安装ESLint扩展。如果您通过npm卸载/安装来执行此操作,请确保重新启动VSCode以使更改生效。