Я создал этот простой компонент с двумя входными параметрами, которые принимают строку и теоретически должны принимать неопределенное значение, поскольку у них есть значение по умолчанию.
Код: Выделить всё
@Component({
selector: 'app-child',
imports: [],
template: `
testString: {{ testString() }}
testStringTransform: {{ testStringTransform() }}
`
})
export class Child {
testString = input("defaultString")
testStringTransform = input("defaultStringTransform", { transform: (v) => v ?? "defaultStringTransform" })
}
В родительском компоненте я использую его, как показано в следующем примере:
Это дает мне следующий результат.
Код: Выделить всё
testString: inputString
testStringTransform: defaultStringTransform
Он использует значение по умолчанию для testStringTransform и переданное входное значение для testString. Я ожидаю, что testString будет работать точно так же, как testStringTransform, если я передам «неопределенное» следующим образом:
На самом деле я получаю ошибку типа:
Этот пример может выглядеть глупо, но он имеет больше смысла, если у вас есть необязательная цепочка. Например:
Я знаю, что могу делать ненулевые утверждения, добавлять проверки типов, добавлять вычисляемый для каждого ввода, который возвращает значение по умолчанию, если значение не определено, или использовать преобразование, которое я использовал в примере. Но это много шаблонного кода. Разве начальное значение входного сигнала не подходит именно для этого случая?
Подробнее здесь:
https://stackoverflow.com/questions/797 ... but-always