Angular 可观察字符串变成数组

Angular 可观察字符串变成数组,angular,rxjs,Angular,Rxjs,我有这个rxjs代码: private getString(): Observable<string> { return from(randomString()); } private transformString(text: string): Observable<string> { let newString = text.split("").reverse().join(""); conso

我有这个rxjs代码:

 private getString(): Observable<string> {
    return from(randomString());
  }

 private transformString(text: string): Observable<string> {
    let newString = text.split("").reverse().join("");
    console.log(newString); <--- all looking good, getting a single string
    return from(newString);
  }

  public getString(): Observable<any> {
    return this.randomString().pipe(
      switchMap((myString) => this.transformString(myString))
    );
  }
private getString():可观察{
从(randomString())返回;
}
私有转换字符串(文本:字符串):可观察{
让newString=text.split(“”).reverse().join(“”);
console.log(newString);this.transformString(myString))
);
}
但是,当我在订阅中收到最终结果时,会出现一个问题,它会生成新字符串的字符串数组

getString().subscribe(str => {
    console.log(str)  <--- prints an array but I am expecting to get just one single reversed string
});
getString().subscribe(str=>{

log(str)因为字符串必须作为可观察对象返回,所以使用可观察类的方法应该是可行的

import { Observable } from 'rxjs/Observable';

return Observable.of(newString)

由于字符串必须作为可观察的对象返回,因此使用可观察类的方法应该是可行的

import { Observable } from 'rxjs/Observable';

return Observable.of(newString)
不会像您预期的那样将参数解释为创建可观察的

具体而言,请注意链接文档中的解释:

在此上下文中,字符串被视为字符数组

如果希望特别使用
中的
使代码段工作,则需要用方括号括住参数。即:

return from([newString]);
下面只是演示了
用法的
之间的区别:

const{from,of}=rxjs;
//“h”、“e”、“l”、“l”、“o”
from('hello')。订阅(console.log);
//“你好”
of('hello')。订阅(console.log);
//“你好”
from(['hello'])。订阅(console.log);
不会像您预期的那样将参数解释为创建可观察的

具体而言,请注意链接文档中的解释:

在此上下文中,字符串被视为字符数组

如果希望特别使用
中的
使代码段工作,则需要用方括号括住参数。即:

return from([newString]);
下面只是演示了
用法的
之间的区别:

const{from,of}=rxjs;
//“h”、“e”、“l”、“l”、“o”
from('hello')。订阅(console.log);
//“你好”
of('hello')。订阅(console.log);
//“你好”
from(['hello'])。订阅(console.log);

对于rxjs操作符,它将以可观察值的形式发出转换后的值。因此无需为转换后的值显式创建可观察值

如果您的目的是在订阅转换字符串时获取转换字符串,请按如下所示更改转换字符串函数

private transformString(text: string): string {
    let newString = text.split("").reverse().join("");
    console.log(newString);
    return newString;
}

与rxjs操作符一样,它会将转换后的值作为可观察值发出,因此无需为转换后的值显式创建可观察值

如果您的目的是在订阅转换字符串时获取转换字符串,请按如下所示更改转换字符串函数

private transformString(text: string): string {
    let newString = text.split("").reverse().join("");
    console.log(newString);
    return newString;
}

如果你做
返回(新闻字符串)
,@AlexanderStaroselsky done,那-一样,但是如果我做了
的(“abc”)
-工作,但是如果我做
的(text.split(“”)。reverse().join(“”)
不工作,如果你做
返回(新闻字符串)
,@AlexanderStaroselsky done,那-一样,但是如果我做了
的(“abc”)
-有效,但如果我执行(text.split(“”)。reverse().join(“”)的
则无效