fix(compiler): use the other case by default in ICU messages
This commit is contained in:
parent
4708b248d5
commit
55dc0e4a5f
|
@ -106,6 +106,13 @@ function _expandDefaultForm(ast: html.Expansion, errors: ParseError[]): html.Ele
|
|||
const expansionResult = expandNodes(c.expression);
|
||||
errors.push(...expansionResult.errors);
|
||||
|
||||
if (c.value === 'other') {
|
||||
// other is the default case when no values match
|
||||
return new html.Element(
|
||||
`template`, [new html.Attribute('ngSwitchDefault', '', c.valueSourceSpan)],
|
||||
expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);
|
||||
}
|
||||
|
||||
return new html.Element(
|
||||
`template`, [new html.Attribute('ngSwitchCase', `${c.value}`, c.valueSourceSpan)],
|
||||
expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);
|
||||
|
|
|
@ -82,14 +82,17 @@ export function main() {
|
|||
});
|
||||
|
||||
it('should handle other special forms', () => {
|
||||
const res = expand(`{person.gender, gender,=male {m}}`);
|
||||
const res = expand(`{person.gender, select, male {m} other {default}}`);
|
||||
|
||||
expect(humanizeNodes(res.nodes)).toEqual([
|
||||
[html.Element, 'ng-container', 0],
|
||||
[html.Attribute, '[ngSwitch]', 'person.gender'],
|
||||
[html.Element, 'template', 1],
|
||||
[html.Attribute, 'ngSwitchCase', '=male'],
|
||||
[html.Attribute, 'ngSwitchCase', 'male'],
|
||||
[html.Text, 'm', 2],
|
||||
[html.Element, 'template', 1],
|
||||
[html.Attribute, 'ngSwitchDefault', ''],
|
||||
[html.Text, 'default', 2],
|
||||
]);
|
||||
});
|
||||
|
||||
|
|
|
@ -1787,18 +1787,18 @@ The pipe 'test' could not be found ("[ERROR ->]{{a | test}}"): TestComp@0:0`);
|
|||
const shortForm = '{ count, plural, =0 {small} many {big} }';
|
||||
const expandedForm = '<ng-container [ngPlural]="count">' +
|
||||
'<template ngPluralCase="=0">small</template>' +
|
||||
'<template ngPluralCase="many">big</template>' +
|
||||
'</ng-container>';
|
||||
'<template ngPluralCase="many">big</template>' + i
|
||||
'</ng-container>';
|
||||
|
||||
expect(humanizeTplAst(parse(shortForm, [
|
||||
]))).toEqual(humanizeTplAst(parse(expandedForm, [])));
|
||||
});
|
||||
|
||||
it('should expand other messages', () => {
|
||||
const shortForm = '{ sex, gender, =f {foo} other {bar} }';
|
||||
it('should expand select messages', () => {
|
||||
const shortForm = '{ sex, select, female {foo} other {bar} }';
|
||||
const expandedForm = '<ng-container [ngSwitch]="sex">' +
|
||||
'<template ngSwitchCase="=f">foo</template>' +
|
||||
'<template ngSwitchCase="other">bar</template>' +
|
||||
'<template ngSwitchCase="female">foo</template>' +
|
||||
'<template ngSwitchDefault>bar</template>' +
|
||||
'</ng-container>';
|
||||
|
||||
expect(humanizeTplAst(parse(shortForm, [
|
||||
|
|
Loading…
Reference in New Issue