This is a solution. The documentation is rather misleading since it isn't true the the value of anchor
only matters when the node has a sibling.
[However, it is not saying what my earlier version of this answer claimed. So if you read that, I was being an idiot and you should ignore it.]
The default value of calign
is center
which aligns the parent's anchor
with the midpoint between the children's anchor
s. And the default value of anchor
is base
.
Here's a picture:

So the alignment we'd like requires either changing the anchor
of the parent and children or using a non-default value for calign
.
In the first case, we could do something like this, setting anchor=center
for the tree:

or anchor=parent
(i.e. west
in this case):

or anchor=children
(i.e. east
) here:

The anchor children
always faces the children of the node (or where the children would be); parent
faces the parent of the node (or where the parent would be).
Alternatively, we could alter calign
. For example calign=edge midpoint
. However, this doesn't work quite as I expected:

I can't figure out exactly where the children's child anchors are in this case but they seem to be wherever-TikZ-would-take-a-path-to relative to wherever you are comping from or going to.
But even setting parent anchor=east
and child anchor=west
for the tree doesn't really help:

So I would change anchor
for the tree, as I do below, regardless of what else seems desirable. This seems to give good results in this case.
(However, for non-circular nodes, something other than center
does often make sense.)
I've also make a couple of other tiny modifications which you may (or may not) be interested in. In particular, I've changed the anchors so that they are not direction-dependent. So you can change the direction of growth and the parent
and child
anchors should still make sense. I've also had the package figure out whether the labels on the edges should go above or below the lines.
But only
anchor=children,% work around alignment issue
is really making any difference to the result.
\documentclass[tikz,multi,border=5pt]{standalone}
\usepackage{forest}
\begin{document}
% Zarko's modification of Gonzalo Medina's answer: http://tex.stackexchange.com/a/177254/
\tikzset{%
EL/.style={%
midway,
#1,
font=\scriptsize\sffamily,
text=teal,
text width=1.5cm,
align=center,
}
}
\begin{forest}
for tree={
draw=teal,
line width=0.4pt,
edge={draw=teal,very thin},
grow=east,
circle,
parent anchor=children,
child anchor=parent,
edge path'={
(!u.parent anchor) -- ([xshift=-17mm].child anchor) -- (.child anchor)
},
l sep=19mm,
anchor=children,% work around alignment issue
},
before typesetting nodes={%
where n=1{%
edge label/.wrap value={node[EL=below]{#1}}
}{%
edge label/.wrap value={node[EL=above]{#1}}
}
}
[, rectangle, s sep=8mm,
[, edge label={option1}
[, edge label={a longer text goes here}
]
[, edge label={text}
]
]
[B, edge label={option2}
[, edge label={a longer text goes here}
]
[, edge label={text}
]
]
]
\end{forest}
\end{document}

Code for demos:
\documentclass[tikz,multi,border=5pt]{standalone}
\usepackage{forest}
\usetikzlibrary{calc}
\begin{document}
\begin{forest}
for tree={% default calign, anchor
grow=east,
draw
}
[
[B, tikz={%
\draw [densely dotted, blue] (!u.base) -- (.base);
\draw [densely dotted, red] (.base) -- ($(!1.base)!1/2!(!l.base)$) edge (!1.base) -- (!l.base);
}
[][]
]
]
\end{forest}
\begin{forest}
for tree={% default calign, anchor=center
grow=east,
draw,
anchor=center
}
[
[B, tikz={%
\draw [densely dotted, blue] (!u.center) -- (.center);
\draw [densely dotted, red] (.center) -- ($(!1.center)!1/2!(!l.center)$) edge (!1.center) -- (!l.center);
}
[][]
]
]
\end{forest}
\begin{forest}
for tree={% default calign, anchor=parent
grow=east,
draw,
anchor=parent
}
[
[B, tikz={%
\draw [densely dotted, blue] (!u.parent) -- (.parent);
\draw [densely dotted, red] (.parent) -- ($(!1.parent)!1/2!(!l.parent)$) edge (!1.parent) -- (!l.parent);
}
[][]
]
]
\end{forest}
\begin{forest}
for tree={% default calign, anchor=children
grow=east,
draw,
anchor=children
}
[
[B, tikz={%
\draw [densely dotted, blue] (!u.children) -- (.children);
\draw [densely dotted, red] (.children) -- ($(!1.children)!1/2!(!l.children)$) edge (!1.children) -- (!l.children);
}
[][]
]
]
\end{forest}
\begin{forest}
for tree={% calign=edge midpoint, default anchor
grow=east,
draw,
calign=edge midpoint,
parent anchor=east,
child anchor=west,
}
[
[B, tikz={%
\draw [densely dotted, blue] (!u.parent anchor) -- (.child anchor);
\draw [densely dotted, red] (.parent anchor) -- ($(!1.child anchor)!1/2!(!l.child anchor)$) edge (!1.child anchor) -- (!l.child anchor);
}
[][]
]
]
\end{forest}
\end{document}
edge label
doing nothing, by the way. I'm slightly surprised it doesn't give an error, but it certainly shouldn't do anything else.