fix(platform-server): support setting innerText property
Domino doesn't support innerText. So the actual inner text wasn't getting set if the [innerText] was set on an element in a template. Add it to the domino adapter to map it to textContent. Also change wrongly named initParse5Adapter to initDominoAdapter.
This commit is contained in:
parent
9ab9437319
commit
831613aab5
@ -87,19 +87,25 @@ export class DominoAdapter extends BrowserDomAdapter {
|
|||||||
isShadowRoot(node: any): boolean { return this.getShadowRoot(node) == node; }
|
isShadowRoot(node: any): boolean { return this.getShadowRoot(node) == node; }
|
||||||
|
|
||||||
getProperty(el: Element, name: string): any {
|
getProperty(el: Element, name: string): any {
|
||||||
// Domino tries tp resolve href-s which we do not want. Just return the
|
|
||||||
// atribute value.
|
|
||||||
if (name === 'href') {
|
if (name === 'href') {
|
||||||
|
// Domino tries tp resolve href-s which we do not want. Just return the
|
||||||
|
// atribute value.
|
||||||
return this.getAttribute(el, 'href');
|
return this.getAttribute(el, 'href');
|
||||||
|
} else if (name === 'innerText') {
|
||||||
|
// Domino does not support innerText. Just map it to textContent.
|
||||||
|
return el.textContent;
|
||||||
}
|
}
|
||||||
return (<any>el)[name];
|
return (<any>el)[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
setProperty(el: Element, name: string, value: any) {
|
setProperty(el: Element, name: string, value: any) {
|
||||||
// Eventhough the server renderer reflects any properties to attributes
|
|
||||||
// map 'href' to atribute just to handle when setProperty is directly called.
|
|
||||||
if (name === 'href') {
|
if (name === 'href') {
|
||||||
|
// Eventhough the server renderer reflects any properties to attributes
|
||||||
|
// map 'href' to atribute just to handle when setProperty is directly called.
|
||||||
this.setAttribute(el, 'href', value);
|
this.setAttribute(el, 'href', value);
|
||||||
|
} else if (name === 'innerText') {
|
||||||
|
// Domino does not support innerText. Just map it to textContent.
|
||||||
|
el.textContent = value;
|
||||||
}
|
}
|
||||||
(<any>el)[name] = value;
|
(<any>el)[name] = value;
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ function notSupported(feature: string): Error {
|
|||||||
export const INTERNAL_SERVER_PLATFORM_PROVIDERS: StaticProvider[] = [
|
export const INTERNAL_SERVER_PLATFORM_PROVIDERS: StaticProvider[] = [
|
||||||
{provide: DOCUMENT, useFactory: _document, deps: [Injector]},
|
{provide: DOCUMENT, useFactory: _document, deps: [Injector]},
|
||||||
{provide: PLATFORM_ID, useValue: PLATFORM_SERVER_ID},
|
{provide: PLATFORM_ID, useValue: PLATFORM_SERVER_ID},
|
||||||
{provide: PLATFORM_INITIALIZER, useFactory: initParse5Adapter, multi: true, deps: [Injector]}, {
|
{provide: PLATFORM_INITIALIZER, useFactory: initDominoAdapter, multi: true, deps: [Injector]}, {
|
||||||
provide: PlatformLocation,
|
provide: PlatformLocation,
|
||||||
useClass: ServerPlatformLocation,
|
useClass: ServerPlatformLocation,
|
||||||
deps: [DOCUMENT, [Optional, INITIAL_CONFIG]]
|
deps: [DOCUMENT, [Optional, INITIAL_CONFIG]]
|
||||||
@ -40,7 +40,7 @@ export const INTERNAL_SERVER_PLATFORM_PROVIDERS: StaticProvider[] = [
|
|||||||
{provide: ALLOW_MULTIPLE_PLATFORMS, useValue: true}
|
{provide: ALLOW_MULTIPLE_PLATFORMS, useValue: true}
|
||||||
];
|
];
|
||||||
|
|
||||||
function initParse5Adapter(injector: Injector) {
|
function initDominoAdapter(injector: Injector) {
|
||||||
return () => { DominoAdapter.makeCurrent(); };
|
return () => { DominoAdapter.makeCurrent(); };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -426,7 +426,7 @@ export function main() {
|
|||||||
let doc: string;
|
let doc: string;
|
||||||
let called: boolean;
|
let called: boolean;
|
||||||
let expectedOutput =
|
let expectedOutput =
|
||||||
'<html><head></head><body><app ng-version="0.0.0-PLACEHOLDER">Works!<h1 innertext="fine"></h1></app></body></html>';
|
'<html><head></head><body><app ng-version="0.0.0-PLACEHOLDER">Works!<h1 innertext="fine">fine</h1></app></body></html>';
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
// PlatformConfig takes in a parsed document so that it can be cached across requests.
|
// PlatformConfig takes in a parsed document so that it can be cached across requests.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user