我有一个大的只读对象,我希望子进程使用但不幸的是这个对象无法被pickle。鉴于它是只读的,我考虑将其声明为全局,然后在Pool中使用初始化函数,我执行必要的复制。我的代码类似于:
const TRIM_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
// tslint:disable-next-line:no-forward-ref
useExisting: forwardRef(() => NgxTrimDirective),
multi: true
};
@Directive({
selector: 'input[ngxTrim]',
providers: [TRIM_VALUE_ACCESSOR]
})
export class NgxTrimDirective implements ControlValueAccessor {
_onChange(_: any) { }
_onTouched() { }
registerOnChange(fn: (value: any) => any): void { this._onChange = fn; }
registerOnTouched(fn: () => any): void { this._onTouched = fn; }
constructor (
private _renderer: Renderer2,
private _elementRef: ElementRef
) { }
writeValue(value: any): void {
value && this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);
}
@HostListener('keyup', ['$event.target'])
_onKeyUp(element: HTMLInputElement) {
let val = element.value.trim();
this.writeValue(val);
this._onChange(val);
}
}
函数setGlobal执行初始化。我的第一个问题涉及setGlobal的参数(它们作为列表传递)。这些需要可以腌制吗?我得到的错误似乎暗示他们这样做。如果是这样,我如何使我的子进程可以看到不可读的只读对象?