2017-10-10 27 views
10

Harita işaretleyici baloon gövdesine sağlam bir HTML dizesi vermem gerekiyor.
Balonun Açısal bileşenini yapmak ve bağlayıcıları ve yerleşik yönergeleri (*ngFor, *ngIf, vb.) Kullanmak istiyorum. Öyleyse, bileşen şablonundaki tüm bağları değerlendirmek ve sonucu bir dizeye derlemek için bir yol arıyorum ...
Bunu nasıl elde edebilirsiniz veya bu yaklaşım açısal değilse - desen ne olabilir?Bağlama bileşenini HTML'ye bağlama derleme

// Component 

import {Component} from '@angular2/core'; 
import {AnyThing} from './somewhere/in/my/app/anything.model.ts'; 

@Component({ 
    selector: 'my-baloon-window', 
    template: `<p>This is a baloon for {{ any.name }}</p>` 
}) 
export class MyBaloonWindowComponent { 
    constructor(public something: AnyThing) {} 
} 


// Implementation 

import {AnyThing} from './somewhere/in/my/app/anything.model.ts'; 
import {MyBaloonWindowComponent} from './path/to/baloon-window.component'; 

/* { ...some code here... } */ 

private createBaloonWindow(thing: AnyThing): google.maps.InfoWindow { 
    return new ymap.map.BaloonWindow({ 
     /* I want something like this */ 
     content: new MyBaloonWindowComponent(thing).toString() 
     /*^this is what I want^*/ 
    }); 
} 
+0

Son zamanlarda buna baktım ve şu anda bunu ortaya çıkaran bir şey olduğunu düşünmüyorum. Angular şablon sözdizimi yerine, çok satırlı şablon dizelerini kullanarak kendi işlevlerimizi yazdık. – jonrsharpe

+0

Bunu bir süredir araştırıyorum ve elementRef,// ​​ReflectiveInjector, Rendered vb. Gibi bazı tekniklerle mümkün olabileceğine dair bazı ipuçları var ... Hala bunun için sağlam ve güzel bir çözüm bulmayı umuyoruz :) –

+4

' '@ angular2/core'; 'Şaka yapıyor gibisiniz – yurzui

cevap

2

Kimsenin Angular Universal'ı önerdiğini hiç şaşırmadım - evet, en azından 2.0 uyumlu sürümünden dolayı tüm bir belgeyi oluşturdu, ancak tekil bileşeninizi bir sayfaya yükleyebilir, bir html haline getirebilirsiniz sonra açısal evrensel ve birlikte dize <html> etiketleri vb çıkarmaz

https://github.com/angular/universal

Eğik evrensel DOM dayanmadan koduna oluşturma motoru gösterme konusuna temelde olan sunucu tarafında, üzerinde HTML işlemek için tasarlanmıştır . Ayrıca Not

, erişmek istiyorsanız Renderer veya doğrudan Açısal 4'te RootRenderer, sen RendererFactory kullanarak yeni bir örneğini oluşturmak gerekir - ama bunlar her iki Açısal doğrudan maruz bırakıldı 2

https://jaxenter.com/angular-4-top-features-133165.html

1

Sen gecikme yani setTimeout(..., 0) veya daha gelişmiş zamanlama, yardımcı hizmet veya özel etkinlik enjekte ElementRef gelen html çıkan almak kullanarak daha sonra gizli div içine MyBaloonWindowComponent işlemek için denemek ve başladı.

Oluşturma işlemini gerçekleştirecek özel bir bileşen (NgComponentOutlet) + hizmeti oluşturmak ve sonuçta ortaya çıkan html'yi istemci koduna göndermek mümkündür.