@@ -0,0 +1,1647 @@
+package org.got5.tapestry5.angular2.components;%0A%0Aimport org.apache.tapestry5.BindingConstants;%0Aimport org.apache.tapestry5.ClientElement;%0Aimport org.apache.tapestry5.ComponentResources;%0Aimport org.apache.tapestry5.MarkupWriter;%0Aimport org.apache.tapestry5.annotations.Parameter;%0Aimport org.apache.tapestry5.annotations.SupportsInformalParameters;%0Aimport org.apache.tapestry5.ioc.annotations.Inject;%0Aimport org.apache.tapestry5.json.JSONObject;%0Aimport org.apache.tapestry5.services.javascript.JavaScriptSupport;%0A%0A@SupportsInformalParameters%0Apublic class A2Component implements ClientElement %7B%0A%0A  @Parameter(required = true, allowNull = false, defaultPrefix = BindingConstants.LITERAL)%0A  private String module;%0A%0A  @Parameter(allowNull = false)%0A  private String elementName = %22div%22;%0A%0A  @Inject%0A  private JavaScriptSupport javaScriptSupport;%0A%0A  @Inject%0A  private ComponentResources componentResources;%0A%0A  private String clientId;%0A%0A  void setupRender() %7B%0A    clientId = javaScriptSupport.allocateClientId(componentResources);%0A  %7D%0A%0A  boolean beginRender(final MarkupWriter writer) %7B%0A    writer.element(elementName, %22id%22, clientId);%0A    return false;%0A  %7D%0A%0A  void afterRender(final MarkupWriter writer) %7B%0A    writer.end();%0A    JSONObject parameters = new JSONObject();%0A    for (String informalParameterName : componentResources.getInformalParameterNames()) %7B%0A      parameters.put(informalParameterName,%0A          componentResources.getInformalParameter(informalParameterName, Object.class));%0A    %7D%0A    javaScriptSupport.require(%22angular2/js/a2component%22).with(module, clientId, parameters);%0A  %7D%0A%0A  public String getClientId() %7B%0A    return clientId;%0A  %7D%0A%7D%0A

Add A2Component.java