我需要从Firestore集合创建一个ion-reorder-group。由于可以实时更新要重新排序的列表,因此可以更精确地从可观察的对象获取数据。
我从@Mirinda Corwin(Ionic / Firebase - error splice is not a function (reorderArray))那里获得了一些代码。
这是我的代码,改编自Mirinda的答案:
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import org.springframework.lang.Nullable;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
import java.beans.PropertyEditorSupport;
import java.io.IOException;
@ControllerAdvice
public class StringTrimModule extends PropertyEditorSupport {
@Component
public class JsonStringTrimModule extends SimpleModule {
public JsonStringTrimModule() {
addDeserializer(String.class, new StdDeserializer<String>(String.class) {
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException {
switch (jsonParser.getCurrentName()) {
case "password":
return _parseString(jsonParser, context);
default:
return trim(_parseString(jsonParser, context));
}
}
});
addSerializer(String.class, new StdSerializer<String>(String.class) {
@Override
public void serialize(String value, JsonGenerator gen, SerializerProvider provider) throws IOException {
gen.writeString(trim(value));
}
});
}
}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setDisallowedFields("*password");
binder.registerCustomEditor(String.class, this);
}
@Override
public void setAsText(@Nullable String text) {
if (text == null) {
setValue(null);
} else {
String value = trim(text);
if ("".equals(value)) {
setValue(null);
} else {
setValue(value);
}
}
}
private String trim(String value) {
return value.trim().replaceAll("( )+", " ");
}
}
但是出现以下错误:“ take不是可观察的属性”。
答案 0 :(得分:0)
当前版本的RxJS更改了将运算符应用于流的方法,应使用“管道”方法:
this.membersList$.pipe(take(1)).subscribe(...);