I don’t see what the problem is. I just tried a simple app:
myDiagram.nodeTemplate =
$(go.Node, "Spot",
$(go.Panel, "Auto", { width: 100, height: 40 },
$(go.Shape, "RoundedRectangle", { fill: "gold" }),
$(go.TextBlock, new go.Binding("text", "key"))
),
$(go.Shape, {
width: 10, height: 10, fill: "transparent",
alignment: go.Spot.Top, alignmentFocus: go.Spot.Top,
portId: "in", toSpot: go.Spot.Top,
toLinkable: true, toLinkableSelfNode: true
}),
$(go.Shape, {
width: 10, height: 10, fill: "transparent",
alignment: go.Spot.Bottom, alignmentFocus: go.Spot.Bottom,
portId: "out", fromSpot: go.Spot.Bottom,
fromLinkable: true, fromLinkableSelfNode: true
})
);
myDiagram.linkTemplate =
$(go.Link,
{ routing: go.Link.Orthogonal, fromPortId: "out", toPortId: "in", corner: 10 },
$(go.Shape),
$(go.Shape, { toArrow: "OpenTriangle" })
);
myDiagram.model = $(go.GraphLinksModel,
{
linkFromPortIdProperty: "out",
linkToPortIdProperty: "in",
nodeDataArray:
[
{ key: "Beta" }
]
});
Running this and drawing a new link from the bottom port to the top port results in:

If you want the temporary Link that the user modifies during the LinkingTool operation, you can do things such as:
myDiagram.toolManager.linkingTool.temporaryLink.routing = go.Link.Orthogonal;
Read more at GoJS Tools -- Northwoods Software