Проблема проявляется в этом поршне:
https://plnkr.co/edit/h1fFuY9VOZDLHO5JAM3o
Я знаю, что все массивы в Typescript передаются по ссылке. Таким образом, должна быть возможность присвоить новый массив этой ссылке.
Но у меня проблема. Если я хочу заменить один массив другим изнутри метода в Angular 6.1.7 (TS 2.9.2), изменения не будут видны извне метода.
private assignArray(arrayToReplace: any[], replacement: any[]) {
arrayToReplace = replacement;
}
Я нашел решение этой проблемы. Вместо назначения исходного массива целевому массиву я удаляю все записи из целевого массива и помещаю в него все записи исходного массива.
private replaceArray(arrayToReplace: any[], replacement: any[]) {
arrayToReplace.splice(0, arrayToReplace.length);
for(let c of replacement) {
arrayToReplace.push(c);
}
}
На самом деле этот плункер ведет себя странно, потому что консоль показывает, что массив был изменен даже до вызова метода replaceArray ().
Так это поведение - ошибка Angular / Typescript?