Recientemente, mi empresa cambió de AngularJS a Angular 12. Ahora estoy usando la versión 5 de Fullcalendar en lugar de la versión 3. Estoy usando la implementación Angular de Fullcalendar: https://fullcalendar.io/docs/angular
Obviamente, muchas cosas ya no funcionan. Vea la siguiente imagen para comprender lo que quiero lograr:
Como puede ver, hay HTML personalizado dentro del evento. No es difícil generar HTML personalizado allí, pero hay un botón en la esquina superior derecha de cada evento que copia el evento. Cuando estaba usando angularJS, esto funcionó bien ya que pude llamar a funciones en el controlador angularJS. Esto ya no funciona.
Luché por encontrar una solución adecuada para activar una función dentro del contexto angular, pero no pude encontrar nada útil en Internet. El problema principal es que puedo escribir todo el HTML personalizado que quiero, pero el contenido no está compilado por angular (o más bien, fuera del alcance angular), por lo tanto, un simple (click)="copyEvent(event)" no funcionará. Sé que podría hacer un enfoque hacky usando onclick="hackyFunction(eventId)" para activar el clic, pero prefiero usar un componente angular real dentro del evento. ¿Tiene alguna sugerencia sobre cómo abordar este problema?
Así que no pude encontrar ninguna forma adecuada de inyectar un componente en el evento, así que se me ocurrió esta solución:
Como puede ver, estoy usando EventRenderHook para representar mi HTML personalizado. Para hacer posible el acceso al contexto Angular, utilicé " window.autoswitch.functionName ". Autoswitch en este caso es solo una variable que generé en la ventana como referencia al componente: (window as any).autoswitch = this; "este" es el componente. Escribí esta declaración en " ngOnInit() "