如何在Angular 5中从.subscribe()获取数据后调用函数

3

我无法找到一个有效的答案。 我有一个可观察的对象,我像这样订阅它:

this.contentfulService.weekNumber
    .subscribe(
        (weekNumber) => { this.weekNumber = weekNumber; }
    );

当数据被接收并放入变量this.weekNumber后,我希望能够执行某些操作。我尝试过以下方法:

this.contentfulService.weekNumber
    .subscribe(
        (weekNumber) => { weekNumber = this.weekNumber; },
        (error) => { console.log(error); },
        () => { console.log(this.weekNumber); }
    );

但是我没有得到console.log的输出? 我只是用console.log作为测试,实际上我想使用在this.weekNumber中的数据来填充某些内容,但当我把它放在weekNumber = this.weekNumber之后,我得到了undefined,所以我需要在定义this.weekNumber之后调用一个函数。任何帮助都将不胜感激。

this.weekNumber = weekNumber instead of weekNumber = this.weekNumber; - Faizuddin Mohammed
@FaizuddinMohammed 仍然无法获取 console.log。 - Smokey Dawson
.subscribe( (weekNumber) => { this.weekNumber =weekNumber; console.log(this.weekNumber); }); - Ankita Gupta
(weekNumber) => { weekNumber = this.weekNumber; }, 这段代码是否有效?请在此处添加日志并检查其是否有效。 - Faizuddin Mohammed
@AnkitaGupta 我们可以添加第三个回调函数,作为 finally 回调函数运行。也许 OP 想要使用它。 - Faizuddin Mohammed
@FaizuddinMohammed @AnkitaGupta 对不起,我的问题更像是,一旦我分配this.weekNumber = weekNumber,我希望this.weekNumber中的数据在页面上使用,所以当我直接将其放在this.weekNumber = weekNumber下面时,我会得到未定义,因此我需要一个在填充了this.weeknumber后运行的函数。 - Smokey Dawson
2个回答

1
你没有以正确的方式分配值。请查看this教程。
请按照以下示例更改您的代码:
    this.contentfulService.weekNumber
        .subscribe(
            (weekNumber) => { 
                    this.weekNumber = weekNumber;
                    console.log(this.weekNumber);
 },
            (error) => { console.log(error); });

抱歉,我的问题更像是,一旦我分配了this.weekNumber = weekNumber,我希望在页面上使用this.weekNumber中的数据,因此当我直接将其放在this.weekNumber = weekNumber下面时,我得到未定义,所以我需要一个函数,在this.weeknumber填充后运行。 - Smokey Dawson
还是不太明白你的意思。能否请你详细解释一下? - Swanand Taware

0

我认为你的订阅应该是这样的:

this.contentfulService.weekNumber
    .subscribe(
        weekNumber => { 
                this.weekNumber = weekNumber;
                console.log(this.weekNumber); }, error => { console.log(error); });

现在你不会得到undefined的this.weekNumber,因为你将在函数内部拥有this的作用域。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接