Входной сигнал Angular: как принять `string | undefined` от родителя, но всегда получает `string` внутри компонента?Html

Программисты Html
Ответить
Anonymous
 Входной сигнал Angular: как принять `string | undefined` от родителя, но всегда получает `string` внутри компонента?

Сообщение Anonymous »

Я создал этот простой компонент с двумя входными параметрами, которые принимают строку и теоретически должны принимать неопределенное значение, поскольку у них есть значение по умолчанию.

Код: Выделить всё

@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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»